Support adding tags to a message.

This commit is contained in:
levlam 2024-01-22 20:25:19 +03:00
parent 61277da56f
commit e8f96d2520
4 changed files with 14 additions and 7 deletions

View File

@ -7627,12 +7627,12 @@ getMessageAvailableReactions chat_id:int53 message_id:int53 row_size:int32 = Ava
//@description Clears the list of recently used reactions
clearRecentReactions = Ok;
//@description Adds a reaction to a message. Use getMessageAvailableReactions to receive the list of available reactions for the message
//@description Adds a reaction or a tag to a message. Use getMessageAvailableReactions to receive the list of available reactions for the message
//@chat_id Identifier of the chat to which the message belongs
//@message_id Identifier of the message
//@reaction_type Type of the reaction to add
//@is_big Pass true if the reaction is added with a big animation
//@update_recent_reactions Pass true if the reaction needs to be added to recent reactions
//@update_recent_reactions Pass true if the reaction needs to be added to recent reactions; tags are never added to the list of recent reactions
addMessageReaction chat_id:int53 message_id:int53 reaction_type:ReactionType is_big:Bool update_recent_reactions:Bool = Ok;
//@description Removes a reaction from a message. A chosen reaction can always be removed

View File

@ -613,7 +613,7 @@ void MessageReactions::update_from(const MessageReactions &old_reactions) {
}
bool MessageReactions::add_my_reaction(const ReactionType &reaction_type, bool is_big, DialogId my_dialog_id,
bool have_recent_choosers) {
bool have_recent_choosers, bool is_tag) {
vector<ReactionType> new_chosen_reaction_order = get_chosen_reaction_types();
auto added_reaction = get_reaction(reaction_type);
@ -633,6 +633,11 @@ bool MessageReactions::add_my_reaction(const ReactionType &reaction_type, bool i
} else if (!is_big) {
return false;
}
if (!is_tag) {
CHECK(!are_tags_);
} else {
are_tags_ = true;
}
auto max_reaction_count = get_max_reaction_count();
while (new_chosen_reaction_order.size() > max_reaction_count) {

View File

@ -170,8 +170,8 @@ struct MessageReactions {
void update_from(const MessageReactions &old_reactions);
bool add_my_reaction(const ReactionType &reaction_type, bool is_big, DialogId my_dialog_id,
bool have_recent_choosers);
bool add_my_reaction(const ReactionType &reaction_type, bool is_big, DialogId my_dialog_id, bool have_recent_choosers,
bool is_tag);
bool remove_my_reaction(const ReactionType &reaction_type, DialogId my_dialog_id);

View File

@ -22724,11 +22724,13 @@ void MessagesManager::add_message_reaction(MessageFullId message_full_id, Reacti
}
LOG(INFO) << "Have message with " << *m->reactions;
if (!m->reactions->add_my_reaction(reaction_type, is_big, get_my_reaction_dialog_id(d), have_recent_choosers)) {
bool is_tag = can_add_message_tag(dialog_id, m->reactions.get());
if (!m->reactions->add_my_reaction(reaction_type, is_big, get_my_reaction_dialog_id(d), have_recent_choosers,
is_tag)) {
return promise.set_value(Unit());
}
if (add_to_recent) {
if (!is_tag && add_to_recent) {
td_->reaction_manager_->add_recent_reaction(reaction_type);
}