From cf73995c4b83b098f49d6b80a15631cb9d873e0a Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 17 Oct 2019 21:54:18 +0300 Subject: [PATCH] =?UTF-8?q?Simplify=20td=5Fapi::=D1=81heckChatUsername=20i?= =?UTF-8?q?mplementation.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GitOrigin-RevId: 554589470cb8184b03161d59af8c5d88a5014601 --- td/telegram/Td.cpp | 40 ++++++++++------------------------------ 1 file changed, 10 insertions(+), 30 deletions(-) diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 708fb814f..113722582 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -1029,35 +1029,6 @@ class GetGroupsInCommonRequest : public RequestActor<> { } }; -class CheckChatUsernameRequest : public RequestActor { - DialogId dialog_id_; - string username_; - - CheckDialogUsernameResult result_ = CheckDialogUsernameResult::Ok; - - void do_run(Promise &&promise) override { - if (get_tries() < 2) { - promise.set_value(std::move(result_)); - return; - } - - td->contacts_manager_->check_dialog_username(dialog_id_, username_, std::move(promise)); - } - - void do_set_result(CheckDialogUsernameResult &&result) override { - result_ = std::move(result); - } - - void do_send_result() override { - send_result(ContactsManager::get_check_chat_username_result_object(result_)); - } - - public: - CheckChatUsernameRequest(ActorShared td, uint64 request_id, int64 dialog_id, string username) - : RequestActor(std::move(td), request_id), dialog_id_(dialog_id), username_(std::move(username)) { - } -}; - class GetCreatedPublicChatsRequest : public RequestActor<> { vector dialog_ids_; @@ -5513,7 +5484,16 @@ void Td::on_request(uint64 id, const td_api::getGroupsInCommon &request) { void Td::on_request(uint64 id, td_api::checkChatUsername &request) { CHECK_IS_USER(); CLEAN_INPUT_STRING(request.username_); - CREATE_REQUEST(CheckChatUsernameRequest, request.chat_id_, std::move(request.username_)); + CREATE_REQUEST_PROMISE(); + auto query_promise = + PromiseCreator::lambda([promise = std::move(promise)](Result result) mutable { + if (result.is_error()) { + promise.set_error(result.move_as_error()); + } else { + promise.set_value(ContactsManager::get_check_chat_username_result_object(result.ok())); + } + }); + contacts_manager_->check_dialog_username(DialogId(request.chat_id_), request.username_, std::move(query_promise)); } void Td::on_request(uint64 id, const td_api::getCreatedPublicChats &request) {