From 8128c6e0795071953d42c0dbbab3496585d8b4e3 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 26 Oct 2023 23:16:06 +0300 Subject: [PATCH] Reget message if reply contains MessageUnsupported. --- td/telegram/MessagesManager.cpp | 4 ++-- td/telegram/RepliedMessageInfo.cpp | 4 ++++ td/telegram/RepliedMessageInfo.h | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 73c641b78..42b5b1e12 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -25776,7 +25776,7 @@ void MessagesManager::on_text_message_ready_to_send(DialogId dialog_id, MessageI const FormattedText *message_text = get_message_content_text(content); CHECK(message_text != nullptr); int64 random_id = begin_send_message(dialog_id, m); - auto input_media = get_message_content_input_media_web_page(td_, m->content.get()); + auto input_media = get_message_content_input_media_web_page(td_, content); if (input_media == nullptr) { td_->create_handler()->send( get_message_flags(m), dialog_id, get_send_message_as_input_peer(m), get_message_input_reply_to(m), @@ -38903,7 +38903,7 @@ void MessagesManager::reget_message_from_server_if_needed(DialogId dialog_id, co } if (need_reget_message_content(m->content.get()) || (m->legacy_layer != 0 && m->legacy_layer < MTPROTO_LAYER) || - m->reply_info.need_reget(td_)) { + m->reply_info.need_reget(td_) || m->replied_message_info.need_reget()) { MessageFullId message_full_id{dialog_id, m->message_id}; LOG(INFO) << "Reget from server " << message_full_id; get_message_from_server(message_full_id, Auto(), "reget_message_from_server_if_needed"); diff --git a/td/telegram/RepliedMessageInfo.cpp b/td/telegram/RepliedMessageInfo.cpp index 9b7487c4f..37be9f054 100644 --- a/td/telegram/RepliedMessageInfo.cpp +++ b/td/telegram/RepliedMessageInfo.cpp @@ -161,6 +161,10 @@ RepliedMessageInfo::RepliedMessageInfo(Td *td, const MessageInputReplyTo &input_ message_id_ = input_reply_to.message_id_; } +bool RepliedMessageInfo::need_reget() const { + return content_ != nullptr && need_reget_message_content(content_.get()); +} + bool RepliedMessageInfo::need_reply_changed_warning( const RepliedMessageInfo &old_info, const RepliedMessageInfo &new_info, MessageId old_top_thread_message_id, bool is_yet_unsent, std::function is_reply_to_deleted_message) { diff --git a/td/telegram/RepliedMessageInfo.h b/td/telegram/RepliedMessageInfo.h index 4a7c345dc..ef3c85a1f 100644 --- a/td/telegram/RepliedMessageInfo.h +++ b/td/telegram/RepliedMessageInfo.h @@ -67,6 +67,8 @@ class RepliedMessageInfo { quote_.text.empty() && content_ == nullptr; } + bool need_reget() const; + static bool need_reply_changed_warning( const RepliedMessageInfo &old_info, const RepliedMessageInfo &new_info, MessageId old_top_thread_message_id, bool is_yet_unsent, std::function is_reply_to_deleted_message);