From 5450d2e53d8eddfbd8a5eeb4708b7bfa891b4f9e Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 21 Aug 2023 22:13:19 +0300 Subject: [PATCH] Make NotificationGroupInfo.::max_removed_notification_id_ private. --- td/telegram/MessagesManager.cpp | 28 ++++++++------------------- td/telegram/NotificationGroupInfo.cpp | 4 ++++ td/telegram/NotificationGroupInfo.h | 2 +- 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 12ce256db..2a1f8a439 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -16173,8 +16173,8 @@ void MessagesManager::fix_dialog_last_notification_id(Dialog *d, bool from_menti const Message *m = get_message(d, (*it)->get_message_id()); if (is_from_mention_notification_group(m) == from_mentions && m->notification_id.is_valid() && is_message_notification_active(d, m) && m->message_id != message_id) { - set_dialog_last_notification_checked(d->dialog_id, group_info, m->date, m->notification_id, - "fix_dialog_last_notification_id"); + set_dialog_last_notification(d->dialog_id, group_info, m->date, m->notification_id, + "fix_dialog_last_notification_id"); return; } --it; @@ -16222,8 +16222,8 @@ void MessagesManager::do_fix_dialog_last_notification_id(DialogId dialog_id, boo last_notification_id = notifications[0].notification_id; } - set_dialog_last_notification_checked(dialog_id, group_info, last_notification_date, last_notification_id, - "do_fix_dialog_last_notification_id"); + set_dialog_last_notification(dialog_id, group_info, last_notification_date, last_notification_id, + "do_fix_dialog_last_notification_id"); } // DO NOT FORGET TO ADD ALL CHANGES OF THIS FUNCTION AS WELL TO delete_all_dialog_messages @@ -30095,12 +30095,10 @@ void MessagesManager::remove_all_dialog_notifications(Dialog *d, bool from_menti return; } NotificationGroupInfo &group_info = get_notification_group_info(d, from_mentions); - if (group_info.group_id_.is_valid() && group_info.last_notification_id_.is_valid() && - group_info.max_removed_notification_id_ != group_info.last_notification_id_) { - if (group_info.set_max_removed_notification_id(group_info.last_notification_id_, - d->notification_info->max_notification_message_id_, source)) { - on_dialog_updated(d->dialog_id, source); - } + if (group_info.group_id_.is_valid() && group_info.last_notification_id_.is_valid()) { + group_info.set_max_removed_notification_id(group_info.last_notification_id_, + d->notification_info->max_notification_message_id_, source); + on_dialog_updated(d->dialog_id, source); if (!d->notification_info->pending_new_message_notifications_.empty()) { for (auto &it : d->notification_info->pending_new_message_notifications_) { @@ -36707,16 +36705,6 @@ void MessagesManager::fix_new_dialog(Dialog *d, unique_ptr &&last_datab on_dialog_updated(dialog_id, "fix pinned message notification 2"); } } - if (d->notification_info != nullptr && d->notification_info->new_secret_chat_notification_id_.is_valid()) { - auto &group_info = d->notification_info->message_notification_group_; - if (group_info.is_removed_notification_id(d->notification_info->new_secret_chat_notification_id_) || - (group_info.last_notification_date_ == 0 && group_info.max_removed_notification_id_.get() == 0)) { - VLOG(notifications) << "Fix removing new secret chat " << d->notification_info->new_secret_chat_notification_id_ - << " in " << dialog_id; - d->notification_info->new_secret_chat_notification_id_ = NotificationId(); - on_dialog_updated(dialog_id, "fix new secret chat notification identifier"); - } - } { auto it = pending_add_dialog_last_database_message_dependent_dialogs_.find(dialog_id); diff --git a/td/telegram/NotificationGroupInfo.cpp b/td/telegram/NotificationGroupInfo.cpp index 8eaabdd00..aaf337b0c 100644 --- a/td/telegram/NotificationGroupInfo.cpp +++ b/td/telegram/NotificationGroupInfo.cpp @@ -14,6 +14,10 @@ namespace td { bool NotificationGroupInfo::set_last_notification(int32 last_notification_date, NotificationId last_notification_id, const char *source) { + if (is_removed_notification_id(last_notification_id)) { + last_notification_id = NotificationId(); + last_notification_date = 0; + } if (last_notification_date_ != last_notification_date || last_notification_id_ != last_notification_id) { VLOG(notifications) << "Set " << group_id_ << " last notification to " << last_notification_id << " sent at " << last_notification_date << " from " << source; diff --git a/td/telegram/NotificationGroupInfo.h b/td/telegram/NotificationGroupInfo.h index 0a87f65d3..eac83ccc4 100644 --- a/td/telegram/NotificationGroupInfo.h +++ b/td/telegram/NotificationGroupInfo.h @@ -15,6 +15,7 @@ namespace td { class NotificationGroupInfo { + NotificationId max_removed_notification_id_; // notification identifier, up to which all notifications are removed MessageId max_removed_message_id_; // message identifier, up to which all notifications are removed bool is_changed_ = false; // true, if the group needs to be saved to database bool try_reuse_ = false; // true, if the group needs to be deleted from database and tried to be reused @@ -25,7 +26,6 @@ class NotificationGroupInfo { NotificationGroupId group_id_; int32 last_notification_date_ = 0; // date of last notification in the group NotificationId last_notification_id_; // identifier of last notification in the group - NotificationId max_removed_notification_id_; // notification identifier, up to which all notifications are removed NotificationGroupInfo() = default;