From 0af40e53ac4657715629a7393eb1901bc74f2f82 Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 2 May 2023 16:46:37 +0300 Subject: [PATCH] Inline delete_all_dialog_messages_from_database. --- td/telegram/MessagesManager.cpp | 44 ++++++++++++++------------------- td/telegram/MessagesManager.h | 2 -- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 42a5cad03..bd8a467bb 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -12040,14 +12040,24 @@ void MessagesManager::delete_all_dialog_messages(Dialog *d, bool remove_from_dia } vector deleted_message_ids; - do_delete_all_dialog_messages(d, is_permanently_deleted, deleted_message_ids); - delete_all_dialog_messages_from_database(d, MessageId::max(), "delete_all_dialog_messages 3"); - if (is_permanently_deleted) { - for (auto id : deleted_message_ids) { - CHECK(id != 0); - d->deleted_message_ids.insert(MessageId{id}); + d->messages.foreach([&](const MessageId &message_id, unique_ptr &message) { + Message *m = message.get(); + + LOG(INFO) << "Delete " << message_id; + deleted_message_ids.push_back(message_id.get()); + + delete_active_live_location(d->dialog_id, m); + remove_message_file_sources(d->dialog_id, m); + + on_message_deleted(d, m, is_permanently_deleted, "do_delete_all_dialog_messages"); + + if (is_permanently_deleted) { + d->deleted_message_ids.insert(m->message_id); } - } + }); + Scheduler::instance()->destroy_on_scheduler(G()->get_gc_scheduler_id(), d->messages, d->ordered_messages); + + delete_all_dialog_messages_from_database(d, MessageId::max(), "delete_all_dialog_messages 3"); if (d->reply_markup_message_id != MessageId()) { set_dialog_reply_markup(d, MessageId()); @@ -16299,7 +16309,7 @@ void MessagesManager::do_fix_dialog_last_notification_id(DialogId dialog_id, boo CHECK(is_fixed); } -// DO NOT FORGET TO ADD ALL CHANGES OF THIS FUNCTION AS WELL TO do_delete_all_dialog_messages +// DO NOT FORGET TO ADD ALL CHANGES OF THIS FUNCTION AS WELL TO delete_all_dialog_messages unique_ptr MessagesManager::do_delete_message(Dialog *d, MessageId message_id, bool is_permanently_deleted, bool only_from_memory, @@ -16712,22 +16722,6 @@ unique_ptr MessagesManager::do_delete_scheduled_messag return result; } -void MessagesManager::do_delete_all_dialog_messages(Dialog *d, bool is_permanently_deleted, - vector &deleted_message_ids) { - d->messages.foreach([&](const MessageId &message_id, unique_ptr &message) { - Message *m = message.get(); - - LOG(INFO) << "Delete " << message_id; - deleted_message_ids.push_back(message_id.get()); - - delete_active_live_location(d->dialog_id, m); - remove_message_file_sources(d->dialog_id, m); - - on_message_deleted(d, m, is_permanently_deleted, "do_delete_all_dialog_messages"); - }); - Scheduler::instance()->destroy_on_scheduler(G()->get_gc_scheduler_id(), d->messages, d->ordered_messages); -} - bool MessagesManager::have_dialog(DialogId dialog_id) const { return dialogs_.count(dialog_id) > 0; } @@ -24890,7 +24884,7 @@ void MessagesManager::cancel_send_message_query(DialogId dialog_id, Message *m) if (queue.empty()) { yet_unsent_media_queues_.erase(queue_it); } else { - // send later, because do_delete_all_dialog_messages can be called right now + // send later, because delete_all_dialog_messages can be called right now send_closure_later(actor_id(this), &MessagesManager::on_yet_unsent_media_queue_updated, dialog_id); } } diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 8e69bbce9..d66c9211b 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -2145,8 +2145,6 @@ class MessagesManager final : public Actor { void delete_all_dialog_messages(Dialog *d, bool remove_from_dialog_list, bool is_permanently_deleted); - void do_delete_all_dialog_messages(Dialog *d, bool is_permanently_deleted, vector &deleted_message_ids); - void erase_delete_messages_log_event(uint64 log_event_id); void delete_sent_message_on_server(DialogId dialog_id, MessageId message_id, MessageId old_message_id);