From d2f9c264ca892f1186b1157964f90ed33c9c86d5 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 3 Sep 2021 08:59:34 +0300 Subject: [PATCH] Use promise instead of RequestActor in td_api::getChatThemes. --- td/telegram/Td.cpp | 17 ++--------------- td/telegram/ThemeManager.cpp | 6 +++--- td/telegram/ThemeManager.h | 8 ++++---- 3 files changed, 9 insertions(+), 22 deletions(-) diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 26945c106..e2f91ba92 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -2910,20 +2910,6 @@ class SetBackgroundRequest final : public RequestActor<> { } }; -class GetChatThemesRequest final : public RequestOnceActor { - void do_run(Promise &&promise) final { - td->theme_manager_->get_chat_themes(std::move(promise)); - } - - void do_send_result() final { - send_result(td->theme_manager_->get_chat_themes_object()); - } - - public: - GetChatThemesRequest(ActorShared td, uint64 request_id) : RequestOnceActor(std::move(td), request_id) { - } -}; - Td::Td(unique_ptr callback, Options options) : callback_(std::move(callback)), td_options_(std::move(options)) { CHECK(callback_ != nullptr); @@ -8095,7 +8081,8 @@ void Td::on_request(uint64 id, const td_api::resetBackgrounds &request) { void Td::on_request(uint64 id, const td_api::getChatThemes &request) { CHECK_IS_USER(); - CREATE_NO_ARGS_REQUEST(GetChatThemesRequest); + CREATE_REQUEST_PROMISE(); + theme_manager_->get_chat_themes(std::move(promise)); } void Td::on_request(uint64 id, td_api::getRecentlyVisitedTMeUrls &request) { diff --git a/td/telegram/ThemeManager.cpp b/td/telegram/ThemeManager.cpp index deb6dc941..cdb70998f 100644 --- a/td/telegram/ThemeManager.cpp +++ b/td/telegram/ThemeManager.cpp @@ -50,7 +50,7 @@ void ThemeManager::tear_down() { parent_.reset(); } -void ThemeManager::get_chat_themes(Promise &&promise) { +void ThemeManager::get_chat_themes(Promise> &&promise) { pending_get_chat_themes_queries_.push_back(std::move(promise)); if (pending_get_chat_themes_queries_.size() == 1) { auto request_promise = PromiseCreator::lambda( @@ -110,7 +110,7 @@ void ThemeManager::on_get_chat_themes(Resultget_id() == telegram_api::account_chatThemesNotModified::ID) { for (auto &promise : promises) { - promise.set_value(Unit()); + promise.set_value(get_chat_themes_object()); } return; } @@ -133,7 +133,7 @@ void ThemeManager::on_get_chat_themes(Result parent); - void get_chat_themes(Promise &&promise); - - td_api::object_ptr get_chat_themes_object() const; + void get_chat_themes(Promise> &&promise); private: enum class BaseTheme : int32 { Classic, Day, Night, Tinted, Arctic }; @@ -60,11 +58,13 @@ class ThemeManager final : public Actor { td_api::object_ptr get_chat_theme_object(const ChatTheme &theme) const; + td_api::object_ptr get_chat_themes_object() const; + static BaseTheme get_base_theme(const telegram_api::object_ptr &base_theme); ThemeSettings get_chat_theme_settings(telegram_api::object_ptr settings); - vector> pending_get_chat_themes_queries_; + vector>> pending_get_chat_themes_queries_; ChatThemes chat_themes_;