From 4d47247fc135d63ec13b7521c74460bfda03e557 Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 9 Sep 2020 02:32:07 +0300 Subject: [PATCH] Support chats as recent repliers. GitOrigin-RevId: 6da36600e99c655f4484f09fc787382481a3148b --- td/telegram/MessageReplyInfo.cpp | 8 ++------ td/telegram/MessageReplyInfo.h | 20 ++++++++++---------- td/telegram/MessagesManager.cpp | 15 +++++++++++---- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/td/telegram/MessageReplyInfo.cpp b/td/telegram/MessageReplyInfo.cpp index e4e77a85e..54ed838f7 100644 --- a/td/telegram/MessageReplyInfo.cpp +++ b/td/telegram/MessageReplyInfo.cpp @@ -6,8 +6,6 @@ // #include "td/telegram/MessageReplyInfo.h" -#include "td/telegram/DialogId.h" - #include "td/utils/logging.h" namespace td { @@ -27,9 +25,7 @@ MessageReplyInfo::MessageReplyInfo(tl_object_ptr & for (auto &peer : reply_info->recent_repliers_) { DialogId dialog_id(peer); if (dialog_id.is_valid()) { - if (dialog_id.get_type() == DialogType::User) { - recent_replier_user_ids.push_back(dialog_id.get_user_id()); - } + recent_replier_dialog_ids.push_back(dialog_id); } else { LOG(ERROR) << "Receive " << dialog_id << " as a recent replier"; } @@ -54,7 +50,7 @@ bool MessageReplyInfo::need_update_to(const MessageReplyInfo &other) const { } StringBuilder &operator<<(StringBuilder &string_builder, const MessageReplyInfo &reply_info) { - return string_builder << reply_info.reply_count << " replies by " << reply_info.recent_replier_user_ids; + return string_builder << reply_info.reply_count << " replies by " << reply_info.recent_replier_dialog_ids; } } // namespace td \ No newline at end of file diff --git a/td/telegram/MessageReplyInfo.h b/td/telegram/MessageReplyInfo.h index c7ae14dc8..bc4c1f90e 100644 --- a/td/telegram/MessageReplyInfo.h +++ b/td/telegram/MessageReplyInfo.h @@ -7,8 +7,8 @@ #pragma once #include "td/telegram/ChannelId.h" +#include "td/telegram/DialogId.h" #include "td/telegram/telegram_api.h" -#include "td/telegram/UserId.h" #include "td/utils/common.h" #include "td/utils/StringBuilder.h" @@ -19,7 +19,7 @@ namespace td { struct MessageReplyInfo { int32 reply_count = -1; int32 pts = -1; - vector recent_replier_user_ids; + vector recent_replier_dialog_ids; ChannelId channel_id; bool is_comment = false; @@ -36,17 +36,17 @@ struct MessageReplyInfo { template void store(StorerT &storer) const { CHECK(!is_empty()); - bool has_recent_replier_user_ids = !recent_replier_user_ids.empty(); + bool has_recent_replier_dialog_ids = !recent_replier_dialog_ids.empty(); bool has_channel_id = channel_id.is_valid(); BEGIN_STORE_FLAGS(); STORE_FLAG(is_comment); - STORE_FLAG(has_recent_replier_user_ids); + STORE_FLAG(has_recent_replier_dialog_ids); STORE_FLAG(has_channel_id); END_STORE_FLAGS(); td::store(reply_count, storer); td::store(pts, storer); - if (has_recent_replier_user_ids) { - td::store(recent_replier_user_ids, storer); + if (has_recent_replier_dialog_ids) { + td::store(recent_replier_dialog_ids, storer); } if (has_channel_id) { td::store(channel_id, storer); @@ -55,17 +55,17 @@ struct MessageReplyInfo { template void parse(ParserT &parser) { - bool has_recent_replier_user_ids = !recent_replier_user_ids.empty(); + bool has_recent_replier_dialog_ids = !recent_replier_dialog_ids.empty(); bool has_channel_id = channel_id.is_valid(); BEGIN_PARSE_FLAGS(); PARSE_FLAG(is_comment); - PARSE_FLAG(has_recent_replier_user_ids); + PARSE_FLAG(has_recent_replier_dialog_ids); PARSE_FLAG(has_channel_id); END_PARSE_FLAGS(); td::parse(reply_count, parser); td::parse(pts, parser); - if (has_recent_replier_user_ids) { - td::parse(recent_replier_user_ids, parser); + if (has_recent_replier_dialog_ids) { + td::parse(recent_replier_dialog_ids, parser); } if (has_channel_id) { td::parse(channel_id, parser); diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 19cb1a1aa..8301e83ff 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -6132,10 +6132,15 @@ td_api::object_ptr MessagesManager::get_message_ return nullptr; } + vector recent_replier_user_ids; + for (auto recent_replier_dialog_id : m->reply_info.recent_replier_dialog_ids) { + if (dialog_id.get_type() == DialogType::User) { + recent_replier_user_ids.push_back(recent_replier_dialog_id.get_user_id()); + } + } return td_api::make_object( m->view_count, m->forward_count, m->reply_info.reply_count, - td_->contacts_manager_->get_user_ids_object(m->reply_info.recent_replier_user_ids, - "get_message_interaction_info_object")); + td_->contacts_manager_->get_user_ids_object(recent_replier_user_ids, "get_message_interaction_info_object")); } bool MessagesManager::update_message_interaction_info(DialogId dialog_id, Message *m, int32 view_count, @@ -20876,8 +20881,10 @@ void MessagesManager::add_message_dependencies(Dependencies &dependencies, Dialo add_dialog_dependencies(dependencies, m->forward_info->from_dialog_id); } } - for (auto recent_replier_user_id : m->reply_info.recent_replier_user_ids) { - dependencies.user_ids.insert(recent_replier_user_id); + for (auto recent_replier_dialog_id : m->reply_info.recent_replier_dialog_ids) { + if (dialog_id.get_type() == DialogType::User) { + dependencies.user_ids.insert(recent_replier_dialog_id.get_user_id()); + } } add_message_content_dependencies(dependencies, m->content.get()); }