diff --git a/td/telegram/MessageContent.cpp b/td/telegram/MessageContent.cpp index 0d51f33fa..8b3191999 100644 --- a/td/telegram/MessageContent.cpp +++ b/td/telegram/MessageContent.cpp @@ -2512,7 +2512,7 @@ bool get_message_content_poll_is_anonymous(const Td *td, const MessageContent *c } } -void has_message_content_web_page(const MessageContent *content) { +bool has_message_content_web_page(const MessageContent *content) { if (content->get_type() == MessageContentType::Text) { return static_cast(content)->web_page_id.is_valid(); } diff --git a/td/telegram/MessageContent.h b/td/telegram/MessageContent.h index 2980e6c69..3b4ef1bb2 100644 --- a/td/telegram/MessageContent.h +++ b/td/telegram/MessageContent.h @@ -135,7 +135,7 @@ bool get_message_content_poll_is_closed(const Td *td, const MessageContent *cont bool get_message_content_poll_is_anonymous(const Td *td, const MessageContent *content); -void has_message_content_web_page(const MessageContent *content); +bool has_message_content_web_page(const MessageContent *content); void remove_message_content_web_page(MessageContent *content); diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 752a39693..ff1d91834 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -18439,7 +18439,8 @@ Result MessagesManager::process_input_message_content( return Status::Error(400, "Can't copy message content"); } - return InputMessageContent(std::move(content), copied_message->disable_web_page_preview, false, 0, UserId()); + return InputMessageContent(std::move(content), get_message_disable_web_page_preview(copied_message), false, 0, + UserId()); } TRY_RESULT(content, get_input_message_content(dialog_id, std::move(input_message_content), td_)); @@ -20208,6 +20209,17 @@ void MessagesManager::edit_message_scheduling_state( } } +bool MessagesManager::get_message_disable_web_page_preview(const Message *m) { + // m->disable_web_page_preview is known only for sent from this client messages + if (m->disable_web_page_preview) { + return true; + } + if (m->content->get_type() != MessageContentType::Text) { + return false; + } + return !has_message_content_web_page(m->content.get()); +} + int32 MessagesManager::get_message_flags(const Message *m) { int32 flags = 0; if (m->reply_to_message_id.is_valid()) { @@ -20820,7 +20832,7 @@ Result> MessagesManager::forward_messages(DialogId to_dialog_i } if (need_copy) { - copied_messages.push_back({std::move(content), forwarded_message->disable_web_page_preview, i}); + copied_messages.push_back({std::move(content), get_message_disable_web_page_preview(forwarded_message), i}); continue; } diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 5dee7aac0..419dd13d5 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -2169,6 +2169,8 @@ class MessagesManager : public Actor { void cancel_send_deleted_message(DialogId dialog_id, Message *m, bool is_permanently_deleted); + static bool get_message_disable_web_page_preview(const Message *m); + static int32 get_message_flags(const Message *m); static bool is_forward_info_sender_hidden(const MessageForwardInfo *forward_info);