Add setMessageReaction.update_recent_reactions.

This commit is contained in:
levlam 2022-09-05 22:04:50 +03:00
parent 51ea826b6c
commit 4fdac24cc5
7 changed files with 21 additions and 12 deletions

View File

@ -5142,7 +5142,8 @@ getMessageAvailableReactions chat_id:int53 message_id:int53 = AvailableReactions
//@message_id Identifier of the message //@message_id Identifier of the message
//@reaction_type Type of the new chosen reaction; pass null or the currently chosen non-big reaction to remove the reaction //@reaction_type Type of the new chosen reaction; pass null or the currently chosen non-big reaction to remove the reaction
//@is_big Pass true if the reaction is added with a big animation //@is_big Pass true if the reaction is added with a big animation
setMessageReaction chat_id:int53 message_id:int53 reaction_type:ReactionType is_big:Bool = Ok; //@update_recent_reactions Pass true if the reaction needs to be added to recent reactions
setMessageReaction chat_id:int53 message_id:int53 reaction_type:ReactionType is_big:Bool update_recent_reactions:Bool = Ok;
//@description Returns reactions added for a message, along with their sender //@description Returns reactions added for a message, along with their sender
//@chat_id Identifier of the chat to which the message belongs //@chat_id Identifier of the chat to which the message belongs

View File

@ -169,7 +169,7 @@ class SendReactionQuery final : public Td::ResultHandler {
explicit SendReactionQuery(Promise<Unit> &&promise) : promise_(std::move(promise)) { explicit SendReactionQuery(Promise<Unit> &&promise) : promise_(std::move(promise)) {
} }
void send(FullMessageId full_message_id, string reaction, bool is_big) { void send(FullMessageId full_message_id, string reaction, bool is_big, bool add_to_recent) {
dialog_id_ = full_message_id.get_dialog_id(); dialog_id_ = full_message_id.get_dialog_id();
auto input_peer = td_->messages_manager_->get_input_peer(dialog_id_, AccessRights::Read); auto input_peer = td_->messages_manager_->get_input_peer(dialog_id_, AccessRights::Read);
@ -184,6 +184,10 @@ class SendReactionQuery final : public Td::ResultHandler {
if (is_big) { if (is_big) {
flags |= telegram_api::messages_sendReaction::BIG_MASK; flags |= telegram_api::messages_sendReaction::BIG_MASK;
} }
if (add_to_recent) {
flags |= telegram_api::messages_sendReaction::ADD_TO_RECENT_MASK;
}
} }
vector<telegram_api::object_ptr<telegram_api::Reaction>> reactions; vector<telegram_api::object_ptr<telegram_api::Reaction>> reactions;
@ -689,9 +693,10 @@ void reload_message_reactions(Td *td, DialogId dialog_id, vector<MessageId> &&me
td->create_handler<GetMessagesReactionsQuery>()->send(dialog_id, std::move(message_ids)); td->create_handler<GetMessagesReactionsQuery>()->send(dialog_id, std::move(message_ids));
} }
void set_message_reaction(Td *td, FullMessageId full_message_id, string reaction, bool is_big, void set_message_reaction(Td *td, FullMessageId full_message_id, string reaction, bool is_big, bool add_to_recent,
Promise<Unit> &&promise) { Promise<Unit> &&promise) {
td->create_handler<SendReactionQuery>(std::move(promise))->send(full_message_id, std::move(reaction), is_big); td->create_handler<SendReactionQuery>(std::move(promise))
->send(full_message_id, std::move(reaction), is_big, add_to_recent);
} }
void get_message_added_reactions(Td *td, FullMessageId full_message_id, string reaction, string offset, int32 limit, void get_message_added_reactions(Td *td, FullMessageId full_message_id, string reaction, string offset, int32 limit,

View File

@ -183,7 +183,8 @@ string get_message_reaction_string(const td_api::object_ptr<td_api::ReactionType
void reload_message_reactions(Td *td, DialogId dialog_id, vector<MessageId> &&message_ids); void reload_message_reactions(Td *td, DialogId dialog_id, vector<MessageId> &&message_ids);
void set_message_reaction(Td *td, FullMessageId full_message_id, string reaction, bool is_big, Promise<Unit> &&promise); void set_message_reaction(Td *td, FullMessageId full_message_id, string reaction, bool is_big, bool add_to_recent,
Promise<Unit> &&promise);
void get_message_added_reactions(Td *td, FullMessageId full_message_id, string reaction, string offset, int32 limit, void get_message_added_reactions(Td *td, FullMessageId full_message_id, string reaction, string offset, int32 limit,
Promise<td_api::object_ptr<td_api::addedReactions>> &&promise); Promise<td_api::object_ptr<td_api::addedReactions>> &&promise);

View File

@ -24515,7 +24515,7 @@ vector<AvailableReaction> MessagesManager::get_message_available_reactions(const
} }
void MessagesManager::set_message_reaction(FullMessageId full_message_id, string reaction, bool is_big, void MessagesManager::set_message_reaction(FullMessageId full_message_id, string reaction, bool is_big,
Promise<Unit> &&promise) { bool add_to_recent, Promise<Unit> &&promise) {
auto dialog_id = full_message_id.get_dialog_id(); auto dialog_id = full_message_id.get_dialog_id();
Dialog *d = get_dialog_force(dialog_id, "set_message_reaction"); Dialog *d = get_dialog_force(dialog_id, "set_message_reaction");
if (d == nullptr) { if (d == nullptr) {
@ -24591,7 +24591,8 @@ void MessagesManager::set_message_reaction(FullMessageId full_message_id, string
send_closure(actor_id, &MessagesManager::on_set_message_reaction, full_message_id, std::move(result), send_closure(actor_id, &MessagesManager::on_set_message_reaction, full_message_id, std::move(result),
std::move(promise)); std::move(promise));
}); });
::td::set_message_reaction(td_, full_message_id, std::move(reaction), is_big, std::move(query_promise)); ::td::set_message_reaction(td_, full_message_id, std::move(reaction), is_big, add_to_recent,
std::move(query_promise));
} }
void MessagesManager::on_set_message_reaction(FullMessageId full_message_id, Result<Unit> result, void MessagesManager::on_set_message_reaction(FullMessageId full_message_id, Result<Unit> result,

View File

@ -808,7 +808,8 @@ class MessagesManager final : public Actor {
Result<vector<AvailableReaction>> get_message_available_reactions(FullMessageId full_message_id); Result<vector<AvailableReaction>> get_message_available_reactions(FullMessageId full_message_id);
void set_message_reaction(FullMessageId full_message_id, string reaction, bool is_big, Promise<Unit> &&promise); void set_message_reaction(FullMessageId full_message_id, string reaction, bool is_big, bool add_to_recent,
Promise<Unit> &&promise);
void get_message_public_forwards(FullMessageId full_message_id, string offset, int32 limit, void get_message_public_forwards(FullMessageId full_message_id, string offset, int32 limit,
Promise<td_api::object_ptr<td_api::foundMessages>> &&promise); Promise<td_api::object_ptr<td_api::foundMessages>> &&promise);

View File

@ -5254,7 +5254,7 @@ void Td::on_request(uint64 id, td_api::setMessageReaction &request) {
CREATE_OK_REQUEST_PROMISE(); CREATE_OK_REQUEST_PROMISE();
messages_manager_->set_message_reaction({DialogId(request.chat_id_), MessageId(request.message_id_)}, messages_manager_->set_message_reaction({DialogId(request.chat_id_), MessageId(request.message_id_)},
get_message_reaction_string(request.reaction_type_), request.is_big_, get_message_reaction_string(request.reaction_type_), request.is_big_,
std::move(promise)); request.update_recent_reactions_, std::move(promise));
} }
void Td::on_request(uint64 id, td_api::getMessageAddedReactions &request) { void Td::on_request(uint64 id, td_api::getMessageAddedReactions &request) {

View File

@ -2225,14 +2225,14 @@ class CliClient final : public Actor {
MessageId message_id; MessageId message_id;
get_args(args, chat_id, message_id); get_args(args, chat_id, message_id);
send_request(td_api::make_object<td_api::getMessageAvailableReactions>(chat_id, message_id)); send_request(td_api::make_object<td_api::getMessageAvailableReactions>(chat_id, message_id));
} else if (op == "react") { } else if (op == "react" || op == "reactr") {
ChatId chat_id; ChatId chat_id;
MessageId message_id; MessageId message_id;
string reaction; string reaction;
bool is_big; bool is_big;
get_args(args, chat_id, message_id, reaction, is_big); get_args(args, chat_id, message_id, reaction, is_big);
send_request( send_request(td_api::make_object<td_api::setMessageReaction>(chat_id, message_id, as_reaction_type(reaction),
td_api::make_object<td_api::setMessageReaction>(chat_id, message_id, as_reaction_type(reaction), is_big)); is_big, op == "reactr"));
} else if (op == "gmars") { } else if (op == "gmars") {
ChatId chat_id; ChatId chat_id;
MessageId message_id; MessageId message_id;