From 3ec96b4c30f1622df0bf9d0e2fdc6893df34a25b Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 13 Dec 2019 17:57:00 +0300 Subject: [PATCH] Remove channels from inactive channels list on new message or after leave. GitOrigin-RevId: 8c9723ed489a714df0b70abe465c04eba1265b0e --- td/telegram/ContactsManager.cpp | 9 +++++++++ td/telegram/ContactsManager.h | 2 ++ td/telegram/MessagesManager.cpp | 3 +++ 3 files changed, 14 insertions(+) diff --git a/td/telegram/ContactsManager.cpp b/td/telegram/ContactsManager.cpp index 18ad59062..ed85b2dcf 100644 --- a/td/telegram/ContactsManager.cpp +++ b/td/telegram/ContactsManager.cpp @@ -6053,6 +6053,12 @@ void ContactsManager::on_get_inactive_channels(vector imported_contact_user_ids, vector unimported_contact_invites) { LOG(INFO) << "Contacts import with random_id " << random_id @@ -7953,6 +7959,9 @@ void ContactsManager::update_channel(Channel *c, ChannelId channel_id, bool from if (c->is_megagroup) { update_dialogs_for_discussion(DialogId(channel_id), c->status.is_administrator() && c->status.can_pin_messages()); } + if (!c->status.is_member()) { + remove_inactive_channel(channel_id); + } } if (c->is_username_changed) { if (c->status.is_creator() && created_public_channels_inited_[0]) { diff --git a/td/telegram/ContactsManager.h b/td/telegram/ContactsManager.h index 14d169f59..a9f72567f 100644 --- a/td/telegram/ContactsManager.h +++ b/td/telegram/ContactsManager.h @@ -231,6 +231,8 @@ class ContactsManager : public Actor { void on_get_inactive_channels(vector> &&chats); + void remove_inactive_channel(ChannelId channel_id); + UserId get_my_id() const; void set_my_online_status(bool is_online, bool send_update, bool is_local); diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 3f951398c..63d6164e2 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -25944,6 +25944,9 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq td_->contacts_manager_->on_update_channel_slow_mode_next_send_date(channel_id, m->date + slow_mode_delay); } } + if (m->date > now - 14 * 86400) { + td_->contacts_manager_->remove_inactive_channel(dialog_id.get_channel_id()); + } } if (!is_attached && !m->have_next && !m->have_previous) {