diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 8b93fa18a..b0c084b7b 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -3948,6 +3948,9 @@ recoverPassword recovery_code:string new_password:string new_hint:string = Passw //@description Removes 2-step verification password without previous password and access to recovery email address. The password can't be reset immediately and the request needs to be repeated after the specified time resetPassword = ResetPasswordResult; +//@description Declines reset of 2-step verification password. The method can be called if passwordState.pending_reset_date > 0 +declinePasswordReset = Ok; + //@description Creates a new temporary password for processing payments @password Persistent user password @valid_for Time during which the temporary password will be valid, in seconds; should be between 60 and 86400 createTemporaryPassword password:string valid_for:int32 = TemporaryPasswordState; diff --git a/td/telegram/PasswordManager.cpp b/td/telegram/PasswordManager.cpp index 2dc836c05..a2f015a36 100644 --- a/td/telegram/PasswordManager.cpp +++ b/td/telegram/PasswordManager.cpp @@ -564,6 +564,17 @@ void PasswordManager::reset_password(Promise promise) { })); } +void PasswordManager::decline_password_reset(Promise promise) { + send_with_promise(G()->net_query_creator().create(telegram_api::account_declinePasswordReset()), + PromiseCreator::lambda([promise = std::move(promise)](Result r_query) mutable { + auto r_result = fetch_result(std::move(r_query)); + if (r_result.is_error()) { + return promise.set_error(r_result.move_as_error()); + } + return promise.set_value(Unit()); + })); +} + void PasswordManager::update_password_settings(UpdateSettings update_settings, Promise promise) { auto result_promise = PromiseCreator::lambda( [actor_id = actor_id(this), promise = std::move(promise)](Result r_update_settings) mutable { diff --git a/td/telegram/PasswordManager.h b/td/telegram/PasswordManager.h index 63348fdd8..9b757cdab 100644 --- a/td/telegram/PasswordManager.h +++ b/td/telegram/PasswordManager.h @@ -85,6 +85,7 @@ class PasswordManager : public NetQueryCallback { void recover_password(string code, string new_password, string new_hint, Promise promise); void reset_password(Promise promise); + void decline_password_reset(Promise promise); void get_secure_secret(string password, Promise promise); void get_input_check_password_srp(string password, diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index d97613d8e..dd06344f2 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -4954,6 +4954,12 @@ void Td::on_request(uint64 id, const td_api::resetPassword &request) { send_closure(password_manager_, &PasswordManager::reset_password, std::move(promise)); } +void Td::on_request(uint64 id, const td_api::declinePasswordReset &request) { + CHECK_IS_USER(); + CREATE_OK_REQUEST_PROMISE(); + send_closure(password_manager_, &PasswordManager::decline_password_reset, std::move(promise)); +} + void Td::on_request(uint64 id, td_api::getTemporaryPasswordState &request) { CHECK_IS_USER(); CREATE_REQUEST_PROMISE(); diff --git a/td/telegram/Td.h b/td/telegram/Td.h index adfb54cb3..65974c7a3 100644 --- a/td/telegram/Td.h +++ b/td/telegram/Td.h @@ -442,6 +442,8 @@ class Td final : public NetQueryCallback { void on_request(uint64 id, const td_api::resetPassword &request); + void on_request(uint64 id, const td_api::declinePasswordReset &request); + void on_request(uint64 id, td_api::getTemporaryPasswordState &request); void on_request(uint64 id, td_api::createTemporaryPassword &request); diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index b34084790..4eefaf5be 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -1794,6 +1794,8 @@ class CliClient final : public Actor { send_request(td_api::make_object(recovery_code, new_password, new_hint)); } else if (op == "resetp") { send_request(td_api::make_object()); + } else if (op == "dpr") { + send_request(td_api::make_object()); } else if (op == "gtp" || op == "GetTemporaryPassword") { send_request(td_api::make_object()); } else if (op == "ctp" || op == "CreateTemporaryPassword") {