From e4a15cc0ef78f4b938aa359ac8a626d747a61f22 Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 1 May 2023 18:09:27 +0300 Subject: [PATCH] Fix MessageReaction::set_my_recent_chooser_dialog_id. --- td/telegram/MessageReaction.cpp | 14 ++++++++++---- td/telegram/MessagesManager.cpp | 6 ++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/td/telegram/MessageReaction.cpp b/td/telegram/MessageReaction.cpp index 95b0b5856..1b6e18823 100644 --- a/td/telegram/MessageReaction.cpp +++ b/td/telegram/MessageReaction.cpp @@ -472,11 +472,14 @@ void MessageReaction::set_my_recent_chooser_dialog_id(DialogId my_dialog_id) { if (!my_recent_chooser_dialog_id_.is_valid() || my_recent_chooser_dialog_id_ == my_dialog_id) { return; } - if (td::contains(recent_chooser_dialog_ids_, my_dialog_id)) { - my_recent_chooser_dialog_id_ = my_dialog_id; - } else { - my_recent_chooser_dialog_id_ = DialogId(); + td::remove(recent_chooser_dialog_ids_, my_dialog_id); + for (auto &dialog_id : recent_chooser_dialog_ids_) { + if (dialog_id == my_recent_chooser_dialog_id_) { + dialog_id = my_dialog_id; + } } + CHECK(td::contains(recent_chooser_dialog_ids_, my_dialog_id)); + my_recent_chooser_dialog_id_ = my_dialog_id; } td_api::object_ptr MessageReaction::get_message_reaction_object(Td *td, UserId my_user_id, @@ -523,6 +526,9 @@ StringBuilder &operator<<(StringBuilder &string_builder, const MessageReaction & string_builder << '[' << reaction.reaction_ << (reaction.is_chosen_ ? " X " : " x ") << reaction.choose_count_; if (!reaction.recent_chooser_dialog_ids_.empty()) { string_builder << " by " << reaction.recent_chooser_dialog_ids_; + if (reaction.my_recent_chooser_dialog_id_.is_valid()) { + string_builder << " and my " << reaction.my_recent_chooser_dialog_id_; + } } return string_builder << ']'; } diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index feba9b39f..ae17606e8 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -7129,12 +7129,14 @@ bool MessagesManager::update_message_interaction_info(Dialog *d, Message *m, int if (has_reactions) { auto it = pending_reactions_.find({dialog_id, m->message_id}); if (it != pending_reactions_.end()) { - LOG(INFO) << "Ignore reactions, because have a pending message reaction"; + LOG(INFO) << "Ignore reactions for " << FullMessageId{dialog_id, m->message_id} + << ", because they are being changed"; has_reactions = false; it->second.was_updated = true; } if (has_reactions && pending_read_reactions_.count({dialog_id, m->message_id}) > 0) { - LOG(INFO) << "Ignore reactions, because have a pending message reaction read"; + LOG(INFO) << "Ignore reactions for " << FullMessageId{dialog_id, m->message_id} + << ", because they are being read"; has_reactions = false; } }