From 55ec944266d3d1edff2d9e48e969936ab10b82d2 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 9 Sep 2022 16:21:00 +0300 Subject: [PATCH] Pass all chosen reactions to send_message_reaction. --- td/telegram/MessageReaction.cpp | 17 ++++++----------- td/telegram/MessageReaction.h | 4 ++-- td/telegram/MessagesManager.cpp | 19 ++++++++++++------- td/telegram/MessagesManager.h | 3 +-- 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/td/telegram/MessageReaction.cpp b/td/telegram/MessageReaction.cpp index 5cc15979e..283fdd595 100644 --- a/td/telegram/MessageReaction.cpp +++ b/td/telegram/MessageReaction.cpp @@ -169,7 +169,7 @@ class SendReactionQuery final : public Td::ResultHandler { explicit SendReactionQuery(Promise &&promise) : promise_(std::move(promise)) { } - void send(FullMessageId full_message_id, string reaction, bool is_big, bool add_to_recent) { + void send(FullMessageId full_message_id, vector reactions, bool is_big, bool add_to_recent) { dialog_id_ = full_message_id.get_dialog_id(); auto input_peer = td_->messages_manager_->get_input_peer(dialog_id_, AccessRights::Read); @@ -178,7 +178,7 @@ class SendReactionQuery final : public Td::ResultHandler { } int32 flags = 0; - if (!reaction.empty()) { + if (!reactions.empty()) { flags |= telegram_api::messages_sendReaction::REACTION_MASK; if (is_big) { @@ -190,15 +190,10 @@ class SendReactionQuery final : public Td::ResultHandler { } } - vector> reactions; - if (!reaction.empty()) { - reactions.push_back(get_input_reaction(reaction)); - } - send_query(G()->net_query_creator().create( telegram_api::messages_sendReaction(flags, false /*ignored*/, false /*ignored*/, std::move(input_peer), full_message_id.get_message_id().get_server_message_id().get(), - std::move(reactions)), + transform(reactions, get_input_reaction)), {{dialog_id_}, {full_message_id}})); } @@ -697,10 +692,10 @@ void reload_message_reactions(Td *td, DialogId dialog_id, vector &&me td->create_handler()->send(dialog_id, std::move(message_ids)); } -void set_message_reaction(Td *td, FullMessageId full_message_id, string reaction, bool is_big, bool add_to_recent, - Promise &&promise) { +void send_message_reaction(Td *td, FullMessageId full_message_id, vector reactions, bool is_big, + bool add_to_recent, Promise &&promise) { td->create_handler(std::move(promise)) - ->send(full_message_id, std::move(reaction), is_big, add_to_recent); + ->send(full_message_id, std::move(reactions), is_big, add_to_recent); } void get_message_added_reactions(Td *td, FullMessageId full_message_id, string reaction, string offset, int32 limit, diff --git a/td/telegram/MessageReaction.h b/td/telegram/MessageReaction.h index 5fa8a2913..855b3c6ec 100644 --- a/td/telegram/MessageReaction.h +++ b/td/telegram/MessageReaction.h @@ -185,8 +185,8 @@ bool is_active_reaction(const string &reaction, const FlatHashMap &&message_ids); -void set_message_reaction(Td *td, FullMessageId full_message_id, string reaction, bool is_big, bool add_to_recent, - Promise &&promise); +void send_message_reaction(Td *td, FullMessageId full_message_id, vector reactions, bool is_big, + bool add_to_recent, Promise &&promise); void get_message_added_reactions(Td *td, FullMessageId full_message_id, string reaction, string offset, int32 limit, Promise> &&promise); diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 22c9d9bbe..cd3739006 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -24569,7 +24569,7 @@ void MessagesManager::add_message_reaction(FullMessageId full_message_id, string m->reactions->reactions_.emplace_back(reaction, 1, true, std::move(recent_chooser_dialog_ids), Auto()); } - set_message_reactions(d, m, reaction, is_big, add_to_recent, std::move(promise)); + set_message_reactions(d, m, is_big, add_to_recent, std::move(promise)); } void MessagesManager::remove_message_reaction(FullMessageId full_message_id, string reaction, Promise &&promise) { @@ -24612,18 +24612,24 @@ void MessagesManager::remove_message_reaction(FullMessageId full_message_id, str return promise.set_value(Unit()); } - set_message_reactions(d, m, reaction, false, false, std::move(promise)); + set_message_reactions(d, m, false, false, std::move(promise)); } -void MessagesManager::set_message_reactions(Dialog *d, Message *m, string reaction, bool is_big, bool add_to_recent, +void MessagesManager::set_message_reactions(Dialog *d, Message *m, bool is_big, bool add_to_recent, Promise &&promise) { CHECK(m->reactions != nullptr); + m->reactions->sort_reactions(active_reaction_pos_); + + vector reactions; + for (auto &reaction : m->reactions->reactions_) { + if (reaction.is_chosen()) { + reactions.push_back(reaction.get_reaction()); + } + } FullMessageId full_message_id{d->dialog_id, m->message_id}; pending_reactions_[full_message_id].query_count++; - m->reactions->sort_reactions(active_reaction_pos_); - send_update_message_interaction_info(d->dialog_id, m); on_message_changed(d, m, true, "set_message_reactions"); @@ -24633,8 +24639,7 @@ void MessagesManager::set_message_reactions(Dialog *d, Message *m, string reacti send_closure(actor_id, &MessagesManager::on_set_message_reactions, full_message_id, std::move(result), std::move(promise)); }); - ::td::set_message_reaction(td_, full_message_id, std::move(reaction), is_big, add_to_recent, - std::move(query_promise)); + send_message_reaction(td_, full_message_id, std::move(reactions), is_big, add_to_recent, std::move(query_promise)); } void MessagesManager::on_set_message_reactions(FullMessageId full_message_id, Result result, diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index fe98e30eb..24da0586f 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -2691,8 +2691,7 @@ class MessagesManager final : public Actor { ChatReactions get_message_available_reactions(const Dialog *d, const Message *m); - void set_message_reactions(Dialog *d, Message *m, string reaction, bool is_big, bool add_to_recent, - Promise &&promise); + void set_message_reactions(Dialog *d, Message *m, bool is_big, bool add_to_recent, Promise &&promise); void on_set_message_reactions(FullMessageId full_message_id, Result result, Promise promise);