Replace updateReactions with updateActiveEmojiReactions.
This commit is contained in:
parent
f119e867df
commit
d29d3674ba
@ -4489,8 +4489,8 @@ updateAttachmentMenuBots bots:vector<attachmentMenuBot> = Update;
|
||||
//@description A message was sent by an opened Web App, so the Web App needs to be closed @web_app_launch_id Identifier of Web App launch
|
||||
updateWebAppMessageSent web_app_launch_id:int64 = Update;
|
||||
|
||||
//@description The list of supported reactions has changed @reactions The new list of supported reactions
|
||||
updateReactions reactions:vector<reaction> = Update;
|
||||
//@description The list of active emoji reactions has changed @emojis The new list of active emoji reactions
|
||||
updateActiveEmojiReactions emojis:vector<string> = Update;
|
||||
|
||||
//@description The type of default reaction has changed @reaction_type The new type of the default reaction
|
||||
updateDefaultReactionType reaction_type:ReactionType = Update;
|
||||
@ -5164,7 +5164,7 @@ editInlineMessageReplyMarkup inline_message_id:string reply_markup:ReplyMarkup =
|
||||
editMessageSchedulingState chat_id:int53 message_id:int53 scheduling_state:MessageSchedulingState = Ok;
|
||||
|
||||
|
||||
//@description Returns reactions, which can be added to a message. The list can change after updateReactions, updateChatAvailableReactions for the chat, or updateMessageInteractionInfo for the message
|
||||
//@description Returns reactions, which can be added to a message. The list can change after updateActiveEmojiReactions, updateChatAvailableReactions for the chat, or updateMessageInteractionInfo for the message
|
||||
//@chat_id Identifier of the chat to which the message belongs
|
||||
//@message_id Identifier of the message
|
||||
getMessageAvailableReactions chat_id:int53 message_id:int53 = AvailableReactions;
|
||||
|
@ -1450,7 +1450,7 @@ void StickersManager::init() {
|
||||
}
|
||||
send_closure(G()->td(), &Td::send_update, get_update_dice_emojis_object());
|
||||
|
||||
send_closure_later(actor_id(this), &StickersManager::load_reactions);
|
||||
load_active_reactions();
|
||||
|
||||
on_update_dice_success_values();
|
||||
on_update_dice_emojis();
|
||||
@ -3654,15 +3654,14 @@ void StickersManager::on_get_special_sticker_set(const SpecialStickerSetType &ty
|
||||
on_load_special_sticker_set(type, Status::OK());
|
||||
}
|
||||
|
||||
td_api::object_ptr<td_api::updateReactions> StickersManager::get_update_reactions_object() const {
|
||||
auto reactions = transform(reactions_.reactions_, [this](const Reaction &reaction) {
|
||||
return td_api::make_object<td_api::reaction>(
|
||||
reaction.reaction_, reaction.title_, reaction.is_active_, get_sticker_object(reaction.static_icon_),
|
||||
get_sticker_object(reaction.appear_animation_), get_sticker_object(reaction.select_animation_),
|
||||
get_sticker_object(reaction.activate_animation_), get_sticker_object(reaction.effect_animation_),
|
||||
get_sticker_object(reaction.around_animation_), get_sticker_object(reaction.center_animation_));
|
||||
});
|
||||
return td_api::make_object<td_api::updateReactions>(std::move(reactions));
|
||||
td_api::object_ptr<td_api::updateActiveEmojiReactions> StickersManager::get_update_active_emoji_reactions_object()
|
||||
const {
|
||||
return td_api::make_object<td_api::updateActiveEmojiReactions>(vector<string>(active_reactions_));
|
||||
}
|
||||
|
||||
void StickersManager::save_active_reactions() {
|
||||
LOG(INFO) << "Save active reactions";
|
||||
G()->td_db()->get_binlog_pmc()->set("active_reactions", log_event_store(active_reactions_).as_slice().str());
|
||||
}
|
||||
|
||||
void StickersManager::save_reactions() {
|
||||
@ -3670,6 +3669,23 @@ void StickersManager::save_reactions() {
|
||||
G()->td_db()->get_binlog_pmc()->set("reactions", log_event_store(reactions_).as_slice().str());
|
||||
}
|
||||
|
||||
void StickersManager::load_active_reactions() {
|
||||
string active_reactions = G()->td_db()->get_binlog_pmc()->get("active_reactions");
|
||||
if (active_reactions.empty()) {
|
||||
return reload_reactions();
|
||||
}
|
||||
|
||||
auto status = log_event_parse(active_reactions_, active_reactions);
|
||||
if (status.is_error()) {
|
||||
LOG(ERROR) << "Can't load active reactions: " << status;
|
||||
active_reactions_ = {};
|
||||
return reload_reactions();
|
||||
}
|
||||
|
||||
LOG(INFO) << "Successfully loaded " << active_reactions_.size() << " active reactions";
|
||||
send_closure(G()->td(), &Td::send_update, get_update_active_emoji_reactions_object());
|
||||
}
|
||||
|
||||
void StickersManager::load_reactions() {
|
||||
string reactions = G()->td_db()->get_binlog_pmc()->get("reactions");
|
||||
if (reactions.empty()) {
|
||||
@ -3691,8 +3707,6 @@ void StickersManager::load_reactions() {
|
||||
}
|
||||
|
||||
LOG(INFO) << "Successfully loaded " << reactions_.reactions_.size() << " available reactions";
|
||||
send_closure(G()->td(), &Td::send_update, get_update_reactions_object());
|
||||
LOG(INFO) << "Successfully sent updateReactions";
|
||||
|
||||
update_active_reactions();
|
||||
}
|
||||
@ -3704,6 +3718,15 @@ void StickersManager::update_active_reactions() {
|
||||
active_reactions.emplace_back(reaction.reaction_);
|
||||
}
|
||||
}
|
||||
if (active_reactions == active_reactions_) {
|
||||
return;
|
||||
}
|
||||
active_reactions_ = active_reactions;
|
||||
|
||||
save_active_reactions();
|
||||
|
||||
send_closure(G()->td(), &Td::send_update, get_update_active_emoji_reactions_object());
|
||||
|
||||
td_->messages_manager_->set_active_reactions(std::move(active_reactions));
|
||||
}
|
||||
|
||||
@ -3760,7 +3783,6 @@ void StickersManager::on_get_available_reactions(
|
||||
}
|
||||
reactions_.reactions_ = std::move(new_reactions);
|
||||
reactions_.hash_ = available_reactions->hash_;
|
||||
send_closure(G()->td(), &Td::send_update, get_update_reactions_object());
|
||||
|
||||
save_reactions();
|
||||
|
||||
@ -8985,8 +9007,8 @@ void StickersManager::get_current_state(vector<td_api::object_ptr<td_api::Update
|
||||
return;
|
||||
}
|
||||
|
||||
if (!reactions_.reactions_.empty()) {
|
||||
updates.push_back(get_update_reactions_object());
|
||||
if (!active_reactions_.empty()) {
|
||||
updates.push_back(get_update_active_emoji_reactions_object());
|
||||
}
|
||||
for (int32 type = 0; type < MAX_STICKER_TYPE; type++) {
|
||||
if (are_installed_sticker_sets_loaded_[type]) {
|
||||
|
@ -821,13 +821,17 @@ class StickersManager final : public Actor {
|
||||
|
||||
void tear_down() final;
|
||||
|
||||
void save_active_reactions();
|
||||
|
||||
void save_reactions();
|
||||
|
||||
void load_active_reactions();
|
||||
|
||||
void load_reactions();
|
||||
|
||||
void update_active_reactions();
|
||||
|
||||
td_api::object_ptr<td_api::updateReactions> get_update_reactions_object() const;
|
||||
td_api::object_ptr<td_api::updateActiveEmojiReactions> get_update_active_emoji_reactions_object() const;
|
||||
|
||||
SpecialStickerSet &add_special_sticker_set(const SpecialStickerSetType &type);
|
||||
|
||||
@ -1004,6 +1008,7 @@ class StickersManager final : public Actor {
|
||||
FlatHashMap<FileId, std::pair<UserId, Promise<Unit>>, FileIdHash> being_uploaded_files_;
|
||||
|
||||
Reactions reactions_;
|
||||
vector<string> active_reactions_;
|
||||
|
||||
FlatHashMap<string, vector<string>> emoji_language_codes_;
|
||||
FlatHashMap<string, int32> emoji_language_code_versions_;
|
||||
|
Loading…
Reference in New Issue
Block a user