From 1fd5452c8feb5aaad67fe7b88106d67517fe583a Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 22 Sep 2022 15:30:12 +0300 Subject: [PATCH] Add version for MessageExtendedMedia::Unsupported. --- td/telegram/MessageContent.cpp | 8 ++++++++ td/telegram/MessageExtendedMedia.cpp | 3 +++ td/telegram/MessageExtendedMedia.h | 13 +++++++++++++ td/telegram/MessageExtendedMedia.hpp | 11 +++++++++++ 4 files changed, 35 insertions(+) diff --git a/td/telegram/MessageContent.cpp b/td/telegram/MessageContent.cpp index e261e3a73..444e065e8 100644 --- a/td/telegram/MessageContent.cpp +++ b/td/telegram/MessageContent.cpp @@ -3224,6 +3224,10 @@ void merge_message_contents(Td *td, const MessageContent *old_content, MessageCo if (old_->input_invoice != new_->input_invoice) { need_update = true; } + if (old_->input_invoice.extended_media.get_unsupported_version() != + new_->input_invoice.extended_media.get_unsupported_version()) { + is_content_changed = true; + } break; } case MessageContentType::LiveLocation: { @@ -5716,6 +5720,10 @@ bool need_reget_message_content(const MessageContent *content) { const auto *m = static_cast(content); return m->version != MessageUnsupported::CURRENT_VERSION; } + case MessageContentType::Invoice: { + const auto *m = static_cast(content); + return m->input_invoice.extended_media.need_reget(); + } default: return false; } diff --git a/td/telegram/MessageExtendedMedia.cpp b/td/telegram/MessageExtendedMedia.cpp index 5ae34a8ae..9a2da3c56 100644 --- a/td/telegram/MessageExtendedMedia.cpp +++ b/td/telegram/MessageExtendedMedia.cpp @@ -82,6 +82,9 @@ MessageExtendedMedia::MessageExtendedMedia( default: break; } + if (type_ == Type::Unsupported) { + unsupported_version_ = CURRENT_VERSION; + } break; } default: diff --git a/td/telegram/MessageExtendedMedia.h b/td/telegram/MessageExtendedMedia.h index b005904d8..26ed78342 100644 --- a/td/telegram/MessageExtendedMedia.h +++ b/td/telegram/MessageExtendedMedia.h @@ -23,6 +23,11 @@ class MessageExtendedMedia { Type type_ = Type::Empty; FormattedText caption_; + static constexpr int32 CURRENT_VERSION = 1; + + // for Unsupported + int32 unsupported_version_ = 0; + // for Preview int32 duration_ = 0; Dimensions dimensions_; @@ -57,6 +62,14 @@ class MessageExtendedMedia { void append_file_ids(const Td *td, vector &file_ids) const; + int32 get_unsupported_version() const { + return unsupported_version_; + } + + bool need_reget() const { + return type_ == Type::Unsupported && unsupported_version_ < CURRENT_VERSION; + } + template void store(StorerT &storer) const; diff --git a/td/telegram/MessageExtendedMedia.hpp b/td/telegram/MessageExtendedMedia.hpp index d2b774cf4..1e3c50378 100644 --- a/td/telegram/MessageExtendedMedia.hpp +++ b/td/telegram/MessageExtendedMedia.hpp @@ -18,6 +18,7 @@ namespace td { template void MessageExtendedMedia::store(StorerT &storer) const { bool has_caption = !caption_.text.empty(); + bool has_unsupported_version = unsupported_version_ != 0; bool has_duration = duration_ != 0; bool has_dimensions = dimensions_.width != 0 || dimensions_.height != 0; bool has_minithumbnail = !minithumbnail_.empty(); @@ -25,6 +26,7 @@ void MessageExtendedMedia::store(StorerT &storer) const { bool has_video = video_file_id_.is_valid(); BEGIN_STORE_FLAGS(); STORE_FLAG(has_caption); + STORE_FLAG(has_unsupported_version); STORE_FLAG(has_duration); STORE_FLAG(has_dimensions); STORE_FLAG(has_minithumbnail); @@ -35,6 +37,9 @@ void MessageExtendedMedia::store(StorerT &storer) const { if (has_caption) { td::store(caption_, storer); } + if (has_unsupported_version) { + td::store(unsupported_version_, storer); + } if (has_duration) { td::store(duration_, storer); } @@ -56,6 +61,7 @@ void MessageExtendedMedia::store(StorerT &storer) const { template void MessageExtendedMedia::parse(ParserT &parser) { bool has_caption; + bool has_unsupported_version; bool has_duration; bool has_dimensions; bool has_minithumbnail; @@ -63,6 +69,7 @@ void MessageExtendedMedia::parse(ParserT &parser) { bool has_video; BEGIN_PARSE_FLAGS(); PARSE_FLAG(has_caption); + PARSE_FLAG(has_unsupported_version); PARSE_FLAG(has_duration); PARSE_FLAG(has_dimensions); PARSE_FLAG(has_minithumbnail); @@ -73,6 +80,9 @@ void MessageExtendedMedia::parse(ParserT &parser) { if (has_caption) { td::parse(caption_, parser); } + if (has_unsupported_version) { + td::parse(unsupported_version_, parser); + } if (has_duration) { td::parse(duration_, parser); } @@ -104,6 +114,7 @@ void MessageExtendedMedia::parse(ParserT &parser) { photo_ = Photo(); video_file_id_ = FileId(); type_ = Type::Unsupported; + unsupported_version_ = 0; } }