From 1ebf835ac56aebb2631d30cecd58fa4fcf7c970d Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 20 Oct 2021 10:46:01 +0300 Subject: [PATCH] Fix process_check_code_result. --- td/generate/tl_writer_td.cpp | 4 ++-- td/telegram/PhoneNumberManager.cpp | 26 +++++++++++++++++--------- td/telegram/PhoneNumberManager.h | 27 +++++++++++++++++---------- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/td/generate/tl_writer_td.cpp b/td/generate/tl_writer_td.cpp index 08ba92185..5b1283573 100644 --- a/td/generate/tl_writer_td.cpp +++ b/td/generate/tl_writer_td.cpp @@ -150,9 +150,9 @@ std::string TD_TL_writer::gen_field_name(std::string name) const { name[i] = '_'; } } - assert(name.size() > 0); + assert(!name.empty()); assert(name[name.size() - 1] != '_'); - return name + "_"; + return name + '_'; } std::string TD_TL_writer::gen_var_name(const tl::var_description &desc) const { diff --git a/td/telegram/PhoneNumberManager.cpp b/td/telegram/PhoneNumberManager.cpp index 0d9c3382c..70ebed288 100644 --- a/td/telegram/PhoneNumberManager.cpp +++ b/td/telegram/PhoneNumberManager.cpp @@ -7,6 +7,7 @@ #include "td/telegram/PhoneNumberManager.h" #include "td/telegram/ConfigManager.h" +#include "td/telegram/ContactsManager.h" #include "td/telegram/Global.h" #include "td/telegram/net/NetQueryDispatcher.h" #include "td/telegram/SuggestedAction.h" @@ -37,8 +38,7 @@ PhoneNumberManager::PhoneNumberManager(PhoneNumberManager::Type type, ActorShare : type_(type), parent_(std::move(parent)) { } -template -void PhoneNumberManager::process_send_code_result(uint64 query_id, const T &send_code) { +void PhoneNumberManager::send_new_send_code_query(uint64 query_id, const telegram_api::Function &send_code) { on_new_query(query_id); start_net_query(NetQueryType::SendCode, G()->net_query_creator().create(send_code)); } @@ -52,9 +52,9 @@ void PhoneNumberManager::set_phone_number(uint64 query_id, string phone_number, case Type::ChangePhone: send_closure(G()->config_manager(), &ConfigManager::hide_suggested_action, SuggestedAction{SuggestedAction::Type::CheckPhoneNumber}); - return process_send_code_result(query_id, send_code_helper_.send_change_phone_code(phone_number, settings)); + return send_new_send_code_query(query_id, send_code_helper_.send_change_phone_code(phone_number, settings)); case Type::VerifyPhone: - return process_send_code_result(query_id, send_code_helper_.send_verify_phone_code(phone_number, settings)); + return send_new_send_code_query(query_id, send_code_helper_.send_verify_phone_code(phone_number, settings)); case Type::ConfirmPhone: default: UNREACHABLE(); @@ -72,7 +72,7 @@ void PhoneNumberManager::set_phone_number_and_hash(uint64 query_id, string hash, switch (type_) { case Type::ConfirmPhone: - return process_send_code_result(query_id, + return send_new_send_code_query(query_id, send_code_helper_.send_confirm_phone_code(hash, phone_number, settings)); case Type::ChangePhone: case Type::VerifyPhone: @@ -96,8 +96,7 @@ void PhoneNumberManager::resend_authentication_code(uint64 query_id) { start_net_query(NetQueryType::SendCode, G()->net_query_creator().create_unauth(r_resend_code.move_as_ok())); } -template -void PhoneNumberManager::send_new_check_code_query(const T &query) { +void PhoneNumberManager::send_new_check_code_query(const telegram_api::Function &query) { start_net_query(NetQueryType::CheckCode, G()->net_query_creator().create(query)); } @@ -162,8 +161,17 @@ void PhoneNumberManager::start_net_query(NetQueryType net_query_type, NetQueryPt G()->net_query_dispatcher().dispatch_with_callback(std::move(net_query), actor_shared(this)); } -template -void PhoneNumberManager::process_check_code_result(T result) { +void PhoneNumberManager::process_check_code_result(Result> &&result) { + if (result.is_error()) { + return on_query_error(result.move_as_error()); + } + send_closure(G()->contacts_manager(), &ContactsManager::on_get_user, result.move_as_ok(), "process_check_code_result", + true, false); + state_ = State::Ok; + on_query_ok(); +} + +void PhoneNumberManager::process_check_code_result(Result &&result) { if (result.is_error()) { return on_query_error(result.move_as_error()); } diff --git a/td/telegram/PhoneNumberManager.h b/td/telegram/PhoneNumberManager.h index e9e721357..f323c0641 100644 --- a/td/telegram/PhoneNumberManager.h +++ b/td/telegram/PhoneNumberManager.h @@ -10,6 +10,7 @@ #include "td/telegram/net/NetQuery.h" #include "td/telegram/SendCodeHelper.h" #include "td/telegram/td_api.h" +#include "td/telegram/telegram_api.h" #include "td/actor/actor.h" @@ -46,23 +47,29 @@ class PhoneNumberManager final : public NetActor { SendCodeHelper send_code_helper_; void on_new_query(uint64 query_id); - void on_query_error(Status status); - static void on_query_error(uint64 id, Status status); + void on_query_ok(); + + void on_query_error(Status status); + + static void on_query_error(uint64 id, Status status); + void start_net_query(NetQueryType net_query_type, NetQueryPtr net_query); - template - void process_send_code_result(uint64 query_id, const T &send_code); + void send_new_send_code_query(uint64 query_id, const telegram_api::Function &query); - template - void send_new_check_code_query(const T &query); + void send_new_check_code_query(const telegram_api::Function &query); - template - void process_check_code_result(T result); + void process_check_code_result(Result> &&result); + + void process_check_code_result(Result &&result); + + void on_result(NetQueryPtr result) final; + + void on_send_code_result(NetQueryPtr &result); void on_check_code_result(NetQueryPtr &result); - void on_send_code_result(NetQueryPtr &result); - void on_result(NetQueryPtr result) final; + void tear_down() final; };