From 82ab2da9c05ac5a74cabf26b6626b711f2a2c4f1 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 3 Nov 2022 21:07:07 +0300 Subject: [PATCH] Pass promise to StickersManager::get_emoji_reaction. --- td/telegram/StickersManager.cpp | 9 +++++++-- td/telegram/StickersManager.h | 4 +++- td/telegram/Td.cpp | 3 ++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/td/telegram/StickersManager.cpp b/td/telegram/StickersManager.cpp index 07e54498a..8953aaebf 100644 --- a/td/telegram/StickersManager.cpp +++ b/td/telegram/StickersManager.cpp @@ -1564,8 +1564,7 @@ void StickersManager::init() { td_->option_manager_->set_option_empty("animated_emoji_sticker_set_name"); // legacy } -td_api::object_ptr StickersManager::get_emoji_reaction_object(const string &emoji) { - load_reactions(); +td_api::object_ptr StickersManager::get_emoji_reaction_object(const string &emoji) const { for (auto &reaction : reactions_.reactions_) { if (reaction.reaction_ == emoji) { return td_api::make_object( @@ -1578,6 +1577,12 @@ td_api::object_ptr StickersManager::get_emoji_reaction_ob return nullptr; } +void StickersManager::get_emoji_reaction(const string &emoji, + Promise> &&promise) { + load_reactions(); + promise.set_value(get_emoji_reaction_object(emoji)); +} + vector StickersManager::get_recent_reactions() { load_recent_reactions(); return recent_reactions_.reactions_; diff --git a/td/telegram/StickersManager.h b/td/telegram/StickersManager.h index 5f520ab9a..f666fe735 100644 --- a/td/telegram/StickersManager.h +++ b/td/telegram/StickersManager.h @@ -179,7 +179,7 @@ class StickersManager final : public Actor { void view_featured_sticker_sets(const vector &sticker_set_ids); - td_api::object_ptr get_emoji_reaction_object(const string &emoji); + void get_emoji_reaction(const string &emoji, Promise> &&promise); vector get_recent_reactions(); @@ -613,6 +613,8 @@ class StickersManager final : public Actor { tl_object_ptr get_sticker_set_info_object(StickerSetId sticker_set_id, size_t covers_limit, bool prefer_premium) const; + td_api::object_ptr get_emoji_reaction_object(const string &emoji) const; + Sticker *get_sticker(FileId file_id); const Sticker *get_sticker(FileId file_id) const; diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 0e58b7457..fc431d320 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -5233,7 +5233,8 @@ void Td::on_request(uint64 id, const td_api::getChatScheduledMessages &request) void Td::on_request(uint64 id, const td_api::getEmojiReaction &request) { CHECK_IS_USER(); - send_closure(actor_id(this), &Td::send_result, id, stickers_manager_->get_emoji_reaction_object(request.emoji_)); + CREATE_REQUEST_PROMISE(); + stickers_manager_->get_emoji_reaction(request.emoji_, std::move(promise)); } void Td::on_request(uint64 id, const td_api::getCustomEmojiReactionAnimations &request) {