Completed ability to recover cloud password with email.
This commit is contained in:
parent
c3595f2e31
commit
76813db3ad
|
@ -877,8 +877,12 @@ void PasscodeBox::setNewCloudPassword(const QString &newPassword) {
|
||||||
MTP_string(_cloudFields.fromRecoveryCode),
|
MTP_string(_cloudFields.fromRecoveryCode),
|
||||||
settings
|
settings
|
||||||
)).done([=](const MTPauth_Authorization &result) {
|
)).done([=](const MTPauth_Authorization &result) {
|
||||||
|
recoverPasswordDone(newPasswordBytes, result);
|
||||||
}).fail([=](const MTP::Error &error) {
|
}).fail([=](const MTP::Error &error) {
|
||||||
|
if (MTP::IsFloodError(error)) {
|
||||||
|
_newError = tr::lng_flood_error(tr::now);
|
||||||
|
update();
|
||||||
|
}
|
||||||
setPasswordFail(newPasswordBytes, email, error);
|
setPasswordFail(newPasswordBytes, email, error);
|
||||||
}).handleFloodErrors().send();
|
}).handleFloodErrors().send();
|
||||||
}
|
}
|
||||||
|
@ -1239,13 +1243,27 @@ void RecoverBox::submit() {
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto send = crl::guard(this, [=] {
|
const auto send = crl::guard(this, [=] {
|
||||||
_submitRequest = _api.request(MTPauth_CheckRecoveryPassword(
|
if (_cloudFields.turningOff) {
|
||||||
MTP_string(code)
|
// From "Disable cloud password".
|
||||||
)).done([=](const MTPBool &result) {
|
_submitRequest = _api.request(MTPauth_RecoverPassword(
|
||||||
checkSubmitDone(code, result);
|
MTP_flags(0),
|
||||||
}).fail([=](const MTP::Error &error) {
|
MTP_string(code),
|
||||||
checkSubmitFail(error);
|
MTPaccount_PasswordInputSettings()
|
||||||
}).handleFloodErrors().send();
|
)).done([=](const MTPauth_Authorization &result) {
|
||||||
|
proceedToClear();
|
||||||
|
}).fail([=](const MTP::Error &error) {
|
||||||
|
checkSubmitFail(error);
|
||||||
|
}).handleFloodErrors().send();
|
||||||
|
} else {
|
||||||
|
// From "Change cloud password".
|
||||||
|
_submitRequest = _api.request(MTPauth_CheckRecoveryPassword(
|
||||||
|
MTP_string(code)
|
||||||
|
)).done([=](const MTPBool &result) {
|
||||||
|
proceedToChange(code);
|
||||||
|
}).fail([=](const MTP::Error &error) {
|
||||||
|
checkSubmitFail(error);
|
||||||
|
}).handleFloodErrors().send();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
if (_cloudFields.notEmptyPassport) {
|
if (_cloudFields.notEmptyPassport) {
|
||||||
const auto confirmed = [=](Fn<void()> &&close) {
|
const auto confirmed = [=](Fn<void()> &&close) {
|
||||||
|
@ -1273,7 +1291,16 @@ void RecoverBox::codeChanged() {
|
||||||
setError(QString());
|
setError(QString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void RecoverBox::checkSubmitDone(const QString &code, const MTPBool &result) {
|
void RecoverBox::proceedToClear() {
|
||||||
|
_submitRequest = 0;
|
||||||
|
_newPasswordSet.fire({});
|
||||||
|
getDelegate()->show(
|
||||||
|
Box<InformBox>(tr::lng_cloud_password_removed(tr::now)),
|
||||||
|
Ui::LayerOption::CloseOther);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RecoverBox::proceedToChange(const QString &code) {
|
||||||
|
Expects(!_cloudFields.turningOff);
|
||||||
_submitRequest = 0;
|
_submitRequest = 0;
|
||||||
|
|
||||||
auto fields = _cloudFields;
|
auto fields = _cloudFields;
|
||||||
|
@ -1281,7 +1308,6 @@ void RecoverBox::checkSubmitDone(const QString &code, const MTPBool &result) {
|
||||||
fields.hasRecovery = false;
|
fields.hasRecovery = false;
|
||||||
// we could've been turning off, no need to force new password then
|
// we could've been turning off, no need to force new password then
|
||||||
// like if (_cloudFields.turningOff) { just RecoverPassword else Check }
|
// like if (_cloudFields.turningOff) { just RecoverPassword else Check }
|
||||||
fields.turningOff = ???
|
|
||||||
fields.curRequest = {};
|
fields.curRequest = {};
|
||||||
auto box = Box<PasscodeBox>(_session, fields);
|
auto box = Box<PasscodeBox>(_session, fields);
|
||||||
|
|
||||||
|
|
|
@ -210,7 +210,8 @@ protected:
|
||||||
private:
|
private:
|
||||||
void submit();
|
void submit();
|
||||||
void codeChanged();
|
void codeChanged();
|
||||||
void checkSubmitDone(const QString &code, const MTPBool &result);
|
void proceedToClear();
|
||||||
|
void proceedToChange(const QString &code);
|
||||||
void checkSubmitFail(const MTP::Error &error);
|
void checkSubmitFail(const MTP::Error &error);
|
||||||
void setError(const QString &error);
|
void setError(const QString &error);
|
||||||
|
|
||||||
|
|
|
@ -228,13 +228,17 @@ void PasswordCheckWidget::codeSubmitDone(
|
||||||
fields.hasRecovery = false;
|
fields.hasRecovery = false;
|
||||||
fields.curRequest = {};
|
fields.curRequest = {};
|
||||||
auto box = Box<PasscodeBox>(&api().instance(), nullptr, fields);
|
auto box = Box<PasscodeBox>(&api().instance(), nullptr, fields);
|
||||||
|
const auto boxShared = std::make_shared<QPointer<PasscodeBox>>();
|
||||||
|
|
||||||
box->newAuthorization(
|
box->newAuthorization(
|
||||||
) | rpl::start_with_next([=](const MTPauth_Authorization &result) {
|
) | rpl::start_with_next([=](const MTPauth_Authorization &result) {
|
||||||
|
if (boxShared) {
|
||||||
|
(*boxShared)->closeBox();
|
||||||
|
}
|
||||||
pwdSubmitDone(true, result);
|
pwdSubmitDone(true, result);
|
||||||
}, lifetime());
|
}, lifetime());
|
||||||
|
|
||||||
Ui::show(std::move(box));
|
*boxShared = Ui::show(std::move(box));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PasswordCheckWidget::codeSubmitFail(const MTP::Error &error) {
|
void PasswordCheckWidget::codeSubmitFail(const MTP::Error &error) {
|
||||||
|
|
|
@ -2086,7 +2086,7 @@ void MainWidget::hideAll() {
|
||||||
void MainWidget::showAll() {
|
void MainWidget::showAll() {
|
||||||
if (cPasswordRecovered()) {
|
if (cPasswordRecovered()) {
|
||||||
cSetPasswordRecovered(false);
|
cSetPasswordRecovered(false);
|
||||||
Ui::show(Box<InformBox>(tr::lng_signin_password_removed(tr::now)));
|
Ui::show(Box<InformBox>(tr::lng_cloud_password_updated(tr::now)));
|
||||||
}
|
}
|
||||||
if (isOneColumn()) {
|
if (isOneColumn()) {
|
||||||
_sideShadow->hide();
|
_sideShadow->hide();
|
||||||
|
|
Loading…
Reference in New Issue