From ee25630c2bd2c3f5769461b8b412cc551b801081 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 10 Nov 2023 18:43:04 +0300 Subject: [PATCH] Delete duplicate of a just sent message before sending updateMessageSendSucceeded. --- td/telegram/MessagesManager.cpp | 14 +++++++++++--- td/telegram/MessagesManager.h | 3 ++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 6929cc33f..8b7e82926 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -14793,7 +14793,7 @@ MessageFullId MessagesManager::on_get_message(MessageInfo &&message_info, const } new_message->message_id = message_id; - send_update_message_send_succeeded(d, old_message_id, new_message.get()); + send_update_message_send_succeeded(d, old_message_id, new_message.get(), &need_update_dialog_pos); if (!message_id.is_scheduled()) { is_sent_message = true; @@ -30177,11 +30177,19 @@ void MessagesManager::remove_message_dialog_notifications(Dialog *d, MessageId m Promise()); } -void MessagesManager::send_update_message_send_succeeded(const Dialog *d, MessageId old_message_id, const Message *m) { +void MessagesManager::send_update_message_send_succeeded(Dialog *d, MessageId old_message_id, const Message *m, + bool *need_update_dialog_pos) { CHECK(m != nullptr); + CHECK(d != nullptr); CHECK(d->is_update_new_chat_sent); if (!td_->auth_manager_->is_bot()) { yet_unsent_message_full_id_to_persistent_message_id_.emplace({d->dialog_id, old_message_id}, m->message_id); + + auto message = + delete_message(d, m->message_id, false, need_update_dialog_pos, "send_update_message_send_succeeded"); + if (message != nullptr) { + send_update_delete_messages(d->dialog_id, {message->message_id.get()}, false); + } } send_closure(G()->td(), &Td::send_update, td_api::make_object( @@ -30944,7 +30952,7 @@ MessageFullId MessagesManager::on_send_message_success(int64 random_id, MessageI sent_message->message_id = new_message_id; - send_update_message_send_succeeded(d, old_message_id, sent_message.get()); + send_update_message_send_succeeded(d, old_message_id, sent_message.get(), &need_update_dialog_pos); bool need_update = true; Message *m = diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index fe9a77012..24713a670 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -2424,7 +2424,8 @@ class MessagesManager final : public Actor { bool need_skip_bot_commands(DialogId dialog_id, const Message *m) const; - void send_update_message_send_succeeded(const Dialog *d, MessageId old_message_id, const Message *m); + void send_update_message_send_succeeded(Dialog *d, MessageId old_message_id, const Message *m, + bool *need_update_dialog_pos); void send_update_message_content(const Dialog *d, Message *m, bool is_message_in_dialog, const char *source);