From e5e9eb3838de19145c45344f80584b1edc75fc0b Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 8 Oct 2020 21:17:24 +0300 Subject: [PATCH] Add MessageReplyInfo::get_message_reply_info_object. GitOrigin-RevId: 8d46914fd096afca99942bec63f2c6f65f9cbb9e --- td/telegram/MessageReplyInfo.cpp | 18 ++++++++++++++++++ td/telegram/MessageReplyInfo.h | 5 +++++ td/telegram/MessagesManager.cpp | 14 ++------------ 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/td/telegram/MessageReplyInfo.cpp b/td/telegram/MessageReplyInfo.cpp index f3f11d68e..509063d61 100644 --- a/td/telegram/MessageReplyInfo.cpp +++ b/td/telegram/MessageReplyInfo.cpp @@ -6,6 +6,7 @@ // #include "td/telegram/MessageReplyInfo.h" +#include "td/telegram/ContactsManager.h" #include "td/telegram/ServerMessageId.h" #include "td/utils/logging.h" @@ -123,6 +124,23 @@ void MessageReplyInfo::add_reply(DialogId replier_dialog_id, MessageId reply_mes } } +td_api::object_ptr MessageReplyInfo::get_message_reply_info_object( + ContactsManager *contacts_manager) const { + if (is_empty()) { + return nullptr; + } + + vector recent_replier_user_ids; + for (auto recent_replier_dialog_id : recent_replier_dialog_ids) { + if (recent_replier_dialog_id.get_type() == DialogType::User) { + recent_replier_user_ids.push_back(recent_replier_dialog_id.get_user_id()); + } + } + return td_api::make_object( + reply_count, contacts_manager->get_user_ids_object(recent_replier_user_ids, "get_message_reply_info_object"), + last_read_inbox_message_id.get(), last_read_outbox_message_id.get(), max_message_id.get()); +} + StringBuilder &operator<<(StringBuilder &string_builder, const MessageReplyInfo &reply_info) { if (reply_info.is_comment) { return string_builder << reply_info.reply_count << " comments in " << reply_info.channel_id << " by " diff --git a/td/telegram/MessageReplyInfo.h b/td/telegram/MessageReplyInfo.h index ef8c874fa..d1c3a75da 100644 --- a/td/telegram/MessageReplyInfo.h +++ b/td/telegram/MessageReplyInfo.h @@ -9,6 +9,7 @@ #include "td/telegram/ChannelId.h" #include "td/telegram/DialogId.h" #include "td/telegram/MessageId.h" +#include "Td/telegram/td_api.h" #include "td/telegram/telegram_api.h" #include "td/utils/common.h" @@ -17,6 +18,8 @@ namespace td { +class ContactsManager; + struct MessageReplyInfo { int32 reply_count = -1; int32 pts = -1; @@ -44,6 +47,8 @@ struct MessageReplyInfo { void add_reply(DialogId replier_dialog_id, MessageId reply_message_id); + td_api::object_ptr get_message_reply_info_object(ContactsManager *contacts_manager) const; + template void store(StorerT &storer) const { CHECK(!is_empty()); diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 037dfe1f6..bd2c44103 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -6560,18 +6560,8 @@ td_api::object_ptr MessagesManager::get_message_ td_api::object_ptr reply_info; if (is_visible_reply_info) { - vector recent_replier_user_ids; - for (auto recent_replier_dialog_id : m->reply_info.recent_replier_dialog_ids) { - if (recent_replier_dialog_id.get_type() == DialogType::User) { - recent_replier_user_ids.push_back(recent_replier_dialog_id.get_user_id()); - } - } - reply_info = td_api::make_object( - m->reply_info.reply_count, - td_->contacts_manager_->get_user_ids_object(recent_replier_user_ids, "get_message_interaction_info_object"), - m->reply_info.last_read_inbox_message_id.get(), m->reply_info.last_read_outbox_message_id.get(), - m->reply_info.max_message_id.get()); - CHECK(reply_info->reply_count_ >= 0); + reply_info = m->reply_info.get_message_reply_info_object(td_->contacts_manager_.get()); + CHECK(reply_info != nullptr); } return td_api::make_object(m->view_count, m->forward_count, std::move(reply_info));