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);