From fe462698bcff3af72324a04e893c8220c02dde89 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 27 Feb 2020 21:15:55 +0300 Subject: [PATCH] Repair scheduled messages after deletion of last known scheduled message. GitOrigin-RevId: 5ccb76b94ed954d7067033a932e248501b8e2fd0 --- td/telegram/MessagesManager.cpp | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 7e64d226b..bb0101ee3 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -22787,6 +22787,10 @@ void MessagesManager::send_update_chat_chat_list(const Dialog *d) const { } void MessagesManager::send_update_secret_chats_with_user_action_bar(const Dialog *d) const { + if (td_->auth_manager_->is_bot()) { + return; + } + if (d->dialog_id.get_type() != DialogType::User) { return; } @@ -22804,6 +22808,10 @@ void MessagesManager::send_update_secret_chats_with_user_action_bar(const Dialog } void MessagesManager::send_update_chat_action_bar(const Dialog *d) { + if (td_->auth_manager_->is_bot()) { + return; + } + CHECK(d != nullptr); LOG_CHECK(d->is_update_new_chat_sent) << "Wrong " << d->dialog_id << " in send_update_chat_action_bar"; on_dialog_updated(d->dialog_id, "send_update_chat_action_bar"); @@ -22814,13 +22822,23 @@ void MessagesManager::send_update_chat_action_bar(const Dialog *d) { } void MessagesManager::send_update_chat_has_scheduled_messages(Dialog *d) { - if (d->scheduled_messages == nullptr && d->has_loaded_scheduled_messages_from_database) { - set_dialog_has_scheduled_database_messages_impl(d, false); + if (td_->auth_manager_->is_bot()) { + return; + } + + if (d->scheduled_messages == nullptr) { + if (d->has_loaded_scheduled_messages_from_database) { + set_dialog_has_scheduled_database_messages_impl(d, false); + } else if (d->has_scheduled_database_messages) { + CHECK(G()->parameters().use_message_db); + repair_dialog_scheduled_messages(d->dialog_id); + } } LOG(INFO) << "Have scheduled messages on server = " << d->has_scheduled_server_messages << ", in database = " << d->has_scheduled_database_messages - << " and in memory = " << (d->scheduled_messages != nullptr); + << " and in memory = " << (d->scheduled_messages != nullptr) + << "; was loaded from database = " << d->has_loaded_scheduled_messages_from_database; bool has_scheduled_messages = d->has_scheduled_server_messages || d->has_scheduled_database_messages || d->scheduled_messages != nullptr; if (has_scheduled_messages == d->last_sent_has_scheduled_messages) { @@ -27902,6 +27920,10 @@ void MessagesManager::fix_new_dialog(Dialog *d, unique_ptr &&last_datab repair_channel_server_unread_count(d); } + if (!G()->parameters().use_message_db) { + d->has_loaded_scheduled_messages_from_database = true; + } + update_dialog_pos(d, false, "fix_new_dialog 7", true, is_loaded_from_database); LOG(INFO) << "Loaded " << dialog_id << " with last new " << d->last_new_message_id << ", first database "