From 2440ebda56157fa68f4dd1a534ce5993902a2e26 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 22 Sep 2022 06:39:40 +0300 Subject: [PATCH] Never replace ExtendedMedia media with preview. --- td/telegram/MessageContent.cpp | 3 ++- td/telegram/MessageExtendedMedia.cpp | 6 ++++++ td/telegram/MessageExtendedMedia.h | 6 ++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/td/telegram/MessageContent.cpp b/td/telegram/MessageContent.cpp index 7aaa81740..e261e3a73 100644 --- a/td/telegram/MessageContent.cpp +++ b/td/telegram/MessageContent.cpp @@ -3219,7 +3219,8 @@ void merge_message_contents(Td *td, const MessageContent *old_content, MessageCo } case MessageContentType::Invoice: { const auto *old_ = static_cast(old_content); - const auto *new_ = static_cast(new_content); + auto *new_ = static_cast(new_content); + new_->input_invoice.extended_media.update_from(old_->input_invoice.extended_media); if (old_->input_invoice != new_->input_invoice) { need_update = true; } diff --git a/td/telegram/MessageExtendedMedia.cpp b/td/telegram/MessageExtendedMedia.cpp index f85cf1d24..5ae34a8ae 100644 --- a/td/telegram/MessageExtendedMedia.cpp +++ b/td/telegram/MessageExtendedMedia.cpp @@ -89,6 +89,12 @@ MessageExtendedMedia::MessageExtendedMedia( } } +void MessageExtendedMedia::update_from(const MessageExtendedMedia &old_extended_media) { + if (!is_media() && old_extended_media.is_media()) { + *this = old_extended_media; + } +} + td_api::object_ptr MessageExtendedMedia::get_message_extended_media_object( Td *td, bool skip_bot_commands, int32 max_media_timestamp) const { if (type_ == Type::Empty) { diff --git a/td/telegram/MessageExtendedMedia.h b/td/telegram/MessageExtendedMedia.h index 1ce17d670..b005904d8 100644 --- a/td/telegram/MessageExtendedMedia.h +++ b/td/telegram/MessageExtendedMedia.h @@ -36,6 +36,10 @@ class MessageExtendedMedia { friend bool operator==(const MessageExtendedMedia &lhs, const MessageExtendedMedia &rhs); + bool is_media() const { + return type_ != Type::Empty && type_ != Type::Preview; + } + public: MessageExtendedMedia() = default; @@ -46,6 +50,8 @@ class MessageExtendedMedia { return type_ == Type::Empty; } + void update_from(const MessageExtendedMedia &old_extended_media); + td_api::object_ptr get_message_extended_media_object(Td *td, bool skip_bot_commands, int32 max_media_timestamp) const;