diff options
| author | levlam <levlam@telegram.org> | 2025-08-01 10:15:41 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2025-08-01 10:15:41 +0300 |
| commit | dfcdd346a1605300e97bd8aa1af06b60fb18879b (patch) | |
| tree | 33a62e33e6725b41a3b44eed14575f00e7431b2c /td/telegram/RepliedMessageInfo.cpp | |
| parent | 4f2b299d120e485bb7c97dc46141cabbf5a7e1c4 (diff) | |
Add messageReplyToMessage.checklist_task_id.
Diffstat (limited to 'td/telegram/RepliedMessageInfo.cpp')
| -rw-r--r-- | td/telegram/RepliedMessageInfo.cpp | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/td/telegram/RepliedMessageInfo.cpp b/td/telegram/RepliedMessageInfo.cpp index 249f1c245..b83fe4436 100644 --- a/td/telegram/RepliedMessageInfo.cpp +++ b/td/telegram/RepliedMessageInfo.cpp @@ -117,6 +117,7 @@ RepliedMessageInfo::RepliedMessageInfo(Td *td, tl_object_ptr<telegram_api::messa if (!origin_.is_empty() || message_id_ != MessageId()) { quote_ = MessageQuote(td, reply_header); } + todo_item_id_ = max(0, reply_header->todo_item_id_); } RepliedMessageInfo::RepliedMessageInfo(Td *td, const MessageInputReplyTo &input_reply_to) { @@ -125,6 +126,7 @@ RepliedMessageInfo::RepliedMessageInfo(Td *td, const MessageInputReplyTo &input_ } message_id_ = input_reply_to.message_id_; quote_ = input_reply_to.quote_.clone(); + todo_item_id_ = 0; // TODO input_reply_to.todo_item_id_; if (input_reply_to.dialog_id_ != DialogId() && input_reply_to.message_id_.is_valid()) { auto info = td->messages_manager_->get_forwarded_message_info({input_reply_to.dialog_id_, input_reply_to.message_id_}); @@ -165,6 +167,7 @@ RepliedMessageInfo RepliedMessageInfo::clone(Td *td) const { MessageContentDupType::Forward, MessageCopyOptions()); } result.quote_ = quote_.clone(); + result.todo_item_id_ = todo_item_id_; return result; } @@ -227,6 +230,14 @@ bool RepliedMessageInfo::need_reply_changed_warning( // move of reply to the top thread message after deletion of the replied message return false; } + if (new_info.todo_item_id_ != 0 && old_info.todo_item_id_ == 0) { + // a message received by an old version + return false; + } + if (is_yet_unsent && old_info.todo_item_id_ != 0 && new_info.todo_item_id_ == 0) { + // server ignored todo_item_id + return false; + } return true; } @@ -310,9 +321,9 @@ td_api::object_ptr<td_api::messageReplyToMessage> RepliedMessageInfo::get_messag } } - return td_api::make_object<td_api::messageReplyToMessage>(chat_id, message_id_.get(), - quote_.get_text_quote_object(td->user_manager_.get()), - std::move(origin), origin_date_, std::move(content)); + return td_api::make_object<td_api::messageReplyToMessage>( + chat_id, message_id_.get(), quote_.get_text_quote_object(td->user_manager_.get()), todo_item_id_, + std::move(origin), origin_date_, std::move(content)); } MessageInputReplyTo RepliedMessageInfo::get_message_input_reply_to() const { @@ -357,7 +368,8 @@ void RepliedMessageInfo::unregister_content(Td *td) const { bool operator==(const RepliedMessageInfo &lhs, const RepliedMessageInfo &rhs) { if (!(lhs.message_id_ == rhs.message_id_ && lhs.dialog_id_ == rhs.dialog_id_ && - lhs.origin_date_ == rhs.origin_date_ && lhs.origin_ == rhs.origin_ && lhs.quote_ == rhs.quote_)) { + lhs.origin_date_ == rhs.origin_date_ && lhs.origin_ == rhs.origin_ && lhs.quote_ == rhs.quote_ && + lhs.todo_item_id_ == rhs.todo_item_id_)) { return false; } bool need_update = false; @@ -381,7 +393,12 @@ StringBuilder &operator<<(StringBuilder &string_builder, const RepliedMessageInf if (info.origin_date_ != 0) { string_builder << " sent at " << info.origin_date_ << " by " << info.origin_; } - string_builder << info.quote_; + if (info.todo_item_id_ != 0) { + string_builder << " to task " << info.todo_item_id_; + } + if (!info.quote_.is_empty()) { + string_builder << info.quote_; + } if (info.content_ != nullptr) { string_builder << " and content of the type " << info.content_->get_type(); } |
