diff --git a/td/telegram/ContactsManager.cpp b/td/telegram/ContactsManager.cpp index 751e8d132..a6f515615 100644 --- a/td/telegram/ContactsManager.cpp +++ b/td/telegram/ContactsManager.cpp @@ -16700,10 +16700,9 @@ tl_object_ptr ContactsManager::get_chat_invite_link_ creates_join_request, is_public); } -UserId ContactsManager::get_support_user(Promise &&promise) { +void ContactsManager::get_support_user(Promise> &&promise) { if (support_user_id_.is_valid()) { - promise.set_value(Unit()); - return support_user_id_; + return promise.set_value(get_user_object(support_user_id_)); } auto query_promise = PromiseCreator::lambda( @@ -16715,10 +16714,9 @@ UserId ContactsManager::get_support_user(Promise &&promise) { } }); td_->create_handler(std::move(query_promise))->send(); - return UserId(); } -void ContactsManager::on_get_support_user(UserId user_id, Promise &&promise) { +void ContactsManager::on_get_support_user(UserId user_id, Promise> &&promise) { TRY_STATUS_PROMISE(promise, G()->close_status()); const User *u = get_user(user_id); @@ -16730,7 +16728,7 @@ void ContactsManager::on_get_support_user(UserId user_id, Promise &&promis } support_user_id_ = user_id; - promise.set_value(Unit()); + promise.set_value(get_user_object(user_id, u)); } void ContactsManager::get_current_state(vector> &updates) const { diff --git a/td/telegram/ContactsManager.h b/td/telegram/ContactsManager.h index 6c2655370..7a6ae4b5d 100644 --- a/td/telegram/ContactsManager.h +++ b/td/telegram/ContactsManager.h @@ -598,7 +598,7 @@ class ContactsManager final : public Actor { tl_object_ptr get_chat_invite_link_info_object(const string &invite_link); - UserId get_support_user(Promise &&promise); + void get_support_user(Promise> &&promise); void repair_chat_participants(ChatId chat_id); @@ -1631,7 +1631,7 @@ class ContactsManager final : public Actor { void send_load_async_graph_query(DcId dc_id, string token, int64 x, Promise> &&promise); - void on_get_support_user(UserId user_id, Promise &&promise); + void on_get_support_user(UserId user_id, Promise> &&promise); static void on_user_online_timeout_callback(void *contacts_manager_ptr, int64 user_id_long); diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 389faefcc..67cda9ebe 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -2675,22 +2675,6 @@ class GetInlineQueryResultsRequest final : public RequestOnceActor { } }; -class GetSupportUserRequest final : public RequestActor<> { - UserId user_id_; - - void do_run(Promise &&promise) final { - user_id_ = td_->contacts_manager_->get_support_user(std::move(promise)); - } - - void do_send_result() final { - send_result(td_->contacts_manager_->get_user_object(user_id_)); - } - - public: - GetSupportUserRequest(ActorShared td, uint64 request_id) : RequestActor(std::move(td), request_id) { - } -}; - class SearchBackgroundRequest final : public RequestActor<> { string name_; @@ -7721,7 +7705,8 @@ void Td::on_request(uint64 id, td_api::checkPhoneNumberConfirmationCode &request void Td::on_request(uint64 id, const td_api::getSupportUser &request) { CHECK_IS_USER(); - CREATE_NO_ARGS_REQUEST(GetSupportUserRequest); + CREATE_REQUEST_PROMISE(); + contacts_manager_->get_support_user(std::move(promise)); } void Td::on_request(uint64 id, const td_api::getBackgrounds &request) {