From d557739a28d79c508f34bfc0a7718bcf12e26ed5 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 22 Apr 2025 12:36:37 +0300 Subject: [PATCH] Added api support to change login email. --- .../SourceFiles/api/api_cloud_password.cpp | 34 +++++++++++++++++++ Telegram/SourceFiles/api/api_cloud_password.h | 11 ++++++ 2 files changed, 45 insertions(+) diff --git a/Telegram/SourceFiles/api/api_cloud_password.cpp b/Telegram/SourceFiles/api/api_cloud_password.cpp index e974154b98..c87b9fc15f 100644 --- a/Telegram/SourceFiles/api/api_cloud_password.cpp +++ b/Telegram/SourceFiles/api/api_cloud_password.cpp @@ -544,4 +544,38 @@ auto CloudPassword::checkRecoveryEmailAddressCode(const QString &code) }; } +void RequestLoginEmailCode( + MTP::Sender &api, + const QString &sendToEmail, + Fn done, + Fn fail) { + api.request(MTPaccount_SendVerifyEmailCode( + MTP_emailVerifyPurposeLoginChange(), + MTP_string(sendToEmail) + )).done([=](const MTPaccount_SentEmailCode &result) { + done(result.data().vlength().v, qs(result.data().vemail_pattern())); + }).fail([=](const MTP::Error &error) { + fail(error.type()); + }).send(); +} + +void VerifyLoginEmail( + MTP::Sender &api, + const QString &code, + Fn done, + Fn fail) { + api.request(MTPaccount_VerifyEmail( + MTP_emailVerifyPurposeLoginChange(), + MTP_emailVerificationCode(MTP_string(code)) + )).done([=](const MTPaccount_EmailVerified &result) { + result.match([=](const MTPDaccount_emailVerified &data) { + done(); + }, [=](const MTPDaccount_emailVerifiedLogin &data) { + fail(QString()); + }); + }).fail([=](const MTP::Error &error) { + fail(error.type()); + }).send(); +} + } // namespace Api diff --git a/Telegram/SourceFiles/api/api_cloud_password.h b/Telegram/SourceFiles/api/api_cloud_password.h index 30bc379382..64b0d54617 100644 --- a/Telegram/SourceFiles/api/api_cloud_password.h +++ b/Telegram/SourceFiles/api/api_cloud_password.h @@ -70,4 +70,15 @@ private: }; +void RequestLoginEmailCode( + MTP::Sender &api, + const QString &sendToEmail, + Fn done, + Fn fail); +void VerifyLoginEmail( + MTP::Sender &api, + const QString &code, + Fn done, + Fn fail); + } // namespace Api