From 9f155e0053ef23c5bfff711c6c21cfb2fa4146de Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sat, 7 May 2022 05:03:41 +0300 Subject: [PATCH] Added ability to confirm recovery email from Api::CloudPassword. --- .../SourceFiles/api/api_cloud_password.cpp | 40 +++++++++++++++++++ Telegram/SourceFiles/api/api_cloud_password.h | 3 ++ 2 files changed, 43 insertions(+) diff --git a/Telegram/SourceFiles/api/api_cloud_password.cpp b/Telegram/SourceFiles/api/api_cloud_password.cpp index a94298913b..15ef2527e8 100644 --- a/Telegram/SourceFiles/api/api_cloud_password.cpp +++ b/Telegram/SourceFiles/api/api_cloud_password.cpp @@ -330,4 +330,44 @@ rpl::producer CloudPassword::check( }; } +rpl::producer CloudPassword::confirmEmail( + const QString &code) { + return [=](auto consumer) { + _api.request(MTPaccount_ConfirmPasswordEmail( + MTP_string(code) + )).done([=] { + _api.request(MTPaccount_GetPassword( + )).done([=](const MTPaccount_Password &result) { + apply(ProcessMtpState(result)); + consumer.put_done(); + }).fail([=](const MTP::Error &error) { + consumer.put_error_copy(error.type()); + }).send(); + }).fail([=](const MTP::Error &error) { + consumer.put_error_copy(error.type()); + }).handleFloodErrors().send(); + + return rpl::lifetime(); + }; +} + +rpl::producer CloudPassword::resendEmailCode() { + return [=](auto consumer) { + _api.request(MTPaccount_ResendPasswordEmail( + )).done([=] { + _api.request(MTPaccount_GetPassword( + )).done([=](const MTPaccount_Password &result) { + apply(ProcessMtpState(result)); + consumer.put_done(); + }).fail([=](const MTP::Error &error) { + consumer.put_error_copy(error.type()); + }).send(); + }).fail([=](const MTP::Error &error) { + consumer.put_error_copy(error.type()); + }).handleFloodErrors().send(); + + return rpl::lifetime(); + }; +} + } // namespace Api diff --git a/Telegram/SourceFiles/api/api_cloud_password.h b/Telegram/SourceFiles/api/api_cloud_password.h index d86f81e5b1..b26f343b8d 100644 --- a/Telegram/SourceFiles/api/api_cloud_password.h +++ b/Telegram/SourceFiles/api/api_cloud_password.h @@ -46,6 +46,9 @@ public: const QString &recoveryEmail); rpl::producer check(const QString &password); + rpl::producer confirmEmail(const QString &code); + rpl::producer resendEmailCode(); + private: void apply(Core::CloudPasswordState state);