mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-07-30 01:13:05 +02:00
Use MTP::Sender in Intro.
This commit is contained in:
parent
0b028b959b
commit
7f09da9e32
15 changed files with 166 additions and 162 deletions
|
@ -410,12 +410,12 @@ bool Call::handleUpdate(const MTPPhoneCall &call) {
|
|||
? _controller->getDebugInfo()
|
||||
: std::string();
|
||||
if (!debugLog.empty()) {
|
||||
MTP::send(
|
||||
MTPphone_SaveCallDebug(
|
||||
MTP_inputPhoneCall(
|
||||
MTP_long(_id),
|
||||
MTP_long(_accessHash)),
|
||||
MTP_dataJSON(MTP_string(debugLog))));
|
||||
user()->session().api().request(MTPphone_SaveCallDebug(
|
||||
MTP_inputPhoneCall(
|
||||
MTP_long(_id),
|
||||
MTP_long(_accessHash)),
|
||||
MTP_dataJSON(MTP_string(debugLog))
|
||||
)).send();
|
||||
}
|
||||
}
|
||||
if (data.is_need_rating() && _id && _accessHash) {
|
||||
|
|
|
@ -15,6 +15,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "ui/widgets/labels.h"
|
||||
#include "ui/text/text_utilities.h"
|
||||
#include "boxes/confirm_box.h"
|
||||
#include "main/main_account.h"
|
||||
#include "mtproto/mtp_instance.h"
|
||||
#include "app.h"
|
||||
#include "styles/style_intro.h"
|
||||
|
||||
|
@ -201,7 +203,7 @@ void CodeWidget::finished() {
|
|||
Step::finished();
|
||||
_checkRequestTimer.cancel();
|
||||
_callTimer.cancel();
|
||||
rpcInvalidate();
|
||||
apiClear();
|
||||
|
||||
cancelled();
|
||||
_sentCode.clear();
|
||||
|
@ -209,9 +211,12 @@ void CodeWidget::finished() {
|
|||
}
|
||||
|
||||
void CodeWidget::cancelled() {
|
||||
MTP::cancel(base::take(_sentRequest));
|
||||
MTP::cancel(base::take(_callRequestId));
|
||||
MTP::send(MTPauth_CancelCode(MTP_string(getData()->phone), MTP_bytes(getData()->phoneHash)));
|
||||
api()->request(base::take(_sentRequest)).cancel();
|
||||
api()->request(base::take(_callRequestId)).cancel();
|
||||
api()->request(MTPauth_CancelCode(
|
||||
MTP_string(getData()->phone),
|
||||
MTP_bytes(getData()->phoneHash)
|
||||
)).send();
|
||||
}
|
||||
|
||||
void CodeWidget::stopCheck() {
|
||||
|
@ -219,12 +224,12 @@ void CodeWidget::stopCheck() {
|
|||
}
|
||||
|
||||
void CodeWidget::checkRequest() {
|
||||
auto status = MTP::state(_sentRequest);
|
||||
auto status = api()->instance()->state(_sentRequest);
|
||||
if (status < 0) {
|
||||
auto leftms = -status;
|
||||
if (leftms >= 1000) {
|
||||
if (_sentRequest) {
|
||||
MTP::cancel(base::take(_sentRequest));
|
||||
api()->request(base::take(_sentRequest)).cancel();
|
||||
_sentCode.clear();
|
||||
}
|
||||
}
|
||||
|
@ -259,14 +264,13 @@ void CodeWidget::codeSubmitDone(const MTPauth_Authorization &result) {
|
|||
});
|
||||
}
|
||||
|
||||
bool CodeWidget::codeSubmitFail(const RPCError &error) {
|
||||
void CodeWidget::codeSubmitFail(const RPCError &error) {
|
||||
if (MTP::isFloodError(error)) {
|
||||
stopCheck();
|
||||
_sentRequest = 0;
|
||||
showCodeError(tr::lng_flood_error());
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
if (MTP::isDefaultHandledError(error)) return false;
|
||||
|
||||
stopCheck();
|
||||
_sentRequest = 0;
|
||||
|
@ -275,24 +279,21 @@ bool CodeWidget::codeSubmitFail(const RPCError &error) {
|
|||
|| err == qstr("PHONE_CODE_EXPIRED")
|
||||
|| err == qstr("PHONE_NUMBER_BANNED")) { // show error
|
||||
goBack();
|
||||
return true;
|
||||
} else if (err == qstr("PHONE_CODE_EMPTY") || err == qstr("PHONE_CODE_INVALID")) {
|
||||
showCodeError(tr::lng_bad_code());
|
||||
return true;
|
||||
} else if (err == qstr("SESSION_PASSWORD_NEEDED")) {
|
||||
_checkRequestTimer.callEach(1000);
|
||||
_sentRequest = MTP::send(
|
||||
MTPaccount_GetPassword(),
|
||||
rpcDone(&CodeWidget::gotPassword),
|
||||
rpcFail(&CodeWidget::codeSubmitFail));
|
||||
return true;
|
||||
}
|
||||
if (Logs::DebugEnabled()) { // internal server error
|
||||
_sentRequest = api()->request(MTPaccount_GetPassword(
|
||||
)).done([=](const MTPaccount_Password &result) {
|
||||
gotPassword(result);
|
||||
}).fail([=](const RPCError &error) {
|
||||
codeSubmitFail(error);
|
||||
}).handleFloodErrors().send();
|
||||
} else if (Logs::DebugEnabled()) { // internal server error
|
||||
showCodeError(rpl::single(err + ": " + error.description()));
|
||||
} else {
|
||||
showCodeError(rpl::single(Lang::Hard::ServerError()));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void CodeWidget::codeChanged() {
|
||||
|
@ -305,11 +306,12 @@ void CodeWidget::sendCall() {
|
|||
if (--_callTimeout <= 0) {
|
||||
_callStatus = CallStatus::Calling;
|
||||
_callTimer.cancel();
|
||||
_callRequestId = MTP::send(
|
||||
MTPauth_ResendCode(
|
||||
MTP_string(getData()->phone),
|
||||
MTP_bytes(getData()->phoneHash)),
|
||||
rpcDone(&CodeWidget::callDone));
|
||||
_callRequestId = api()->request(MTPauth_ResendCode(
|
||||
MTP_string(getData()->phone),
|
||||
MTP_bytes(getData()->phoneHash)
|
||||
)).done([=](const MTPauth_SentCode &result) {
|
||||
callDone(result);
|
||||
}).send();
|
||||
} else {
|
||||
getData()->callStatus = _callStatus;
|
||||
getData()->callTimeout = _callTimeout;
|
||||
|
@ -382,25 +384,29 @@ void CodeWidget::submit() {
|
|||
getData()->hasRecovery = false;
|
||||
getData()->pwdHint = QString();
|
||||
getData()->pwdNotEmptyPassport = false;
|
||||
_sentRequest = MTP::send(
|
||||
MTPauth_SignIn(
|
||||
MTP_string(getData()->phone),
|
||||
MTP_bytes(getData()->phoneHash),
|
||||
MTP_string(_sentCode)),
|
||||
rpcDone(&CodeWidget::codeSubmitDone),
|
||||
rpcFail(&CodeWidget::codeSubmitFail));
|
||||
_sentRequest = api()->request(MTPauth_SignIn(
|
||||
MTP_string(getData()->phone),
|
||||
MTP_bytes(getData()->phoneHash),
|
||||
MTP_string(_sentCode)
|
||||
)).done([=](const MTPauth_Authorization &result) {
|
||||
codeSubmitDone(result);
|
||||
}).fail([=](const RPCError &error) {
|
||||
codeSubmitFail(error);
|
||||
}).handleFloodErrors().send();
|
||||
}
|
||||
|
||||
void CodeWidget::noTelegramCode() {
|
||||
if (_noTelegramCodeRequestId) {
|
||||
return;
|
||||
}
|
||||
_noTelegramCodeRequestId = MTP::send(
|
||||
MTPauth_ResendCode(
|
||||
MTP_string(getData()->phone),
|
||||
MTP_bytes(getData()->phoneHash)),
|
||||
rpcDone(&CodeWidget::noTelegramCodeDone),
|
||||
rpcFail(&CodeWidget::noTelegramCodeFail));
|
||||
_noTelegramCodeRequestId = api()->request(MTPauth_ResendCode(
|
||||
MTP_string(getData()->phone),
|
||||
MTP_bytes(getData()->phoneHash)
|
||||
)).done([=](const MTPauth_SentCode &result) {
|
||||
noTelegramCodeDone(result);
|
||||
}).fail([=](const RPCError &error) {
|
||||
noTelegramCodeFail(error);
|
||||
}).handleFloodErrors().send();
|
||||
}
|
||||
|
||||
void CodeWidget::noTelegramCodeDone(const MTPauth_SentCode &result) {
|
||||
|
@ -426,14 +432,11 @@ void CodeWidget::noTelegramCodeDone(const MTPauth_SentCode &result) {
|
|||
updateDescText();
|
||||
}
|
||||
|
||||
bool CodeWidget::noTelegramCodeFail(const RPCError &error) {
|
||||
void CodeWidget::noTelegramCodeFail(const RPCError &error) {
|
||||
if (MTP::isFloodError(error)) {
|
||||
_noTelegramCodeRequestId = 0;
|
||||
showCodeError(tr::lng_flood_error());
|
||||
return true;
|
||||
}
|
||||
if (MTP::isDefaultHandledError(error)) {
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
_noTelegramCodeRequestId = 0;
|
||||
|
@ -442,7 +445,6 @@ bool CodeWidget::noTelegramCodeFail(const RPCError &error) {
|
|||
} else {
|
||||
showCodeError(rpl::single(Lang::Hard::ServerError()));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace details
|
||||
|
|
|
@ -74,14 +74,14 @@ private:
|
|||
void updateControlsGeometry();
|
||||
|
||||
void codeSubmitDone(const MTPauth_Authorization &result);
|
||||
bool codeSubmitFail(const RPCError &error);
|
||||
void codeSubmitFail(const RPCError &error);
|
||||
|
||||
void showCodeError(rpl::producer<QString> text);
|
||||
void callDone(const MTPauth_SentCode &v);
|
||||
void gotPassword(const MTPaccount_Password &result);
|
||||
|
||||
void noTelegramCodeDone(const MTPauth_SentCode &result);
|
||||
bool noTelegramCodeFail(const RPCError &result);
|
||||
void noTelegramCodeFail(const RPCError &result);
|
||||
|
||||
void stopCheck();
|
||||
|
||||
|
|
|
@ -29,7 +29,6 @@ PasswordCheckWidget::PasswordCheckWidget(
|
|||
not_null<Main::Account*> account,
|
||||
not_null<Data*> data)
|
||||
: Step(parent, account, data)
|
||||
, _api(account->mtp())
|
||||
, _request(getData()->pwdRequest)
|
||||
, _hasRecovery(getData()->hasRecovery)
|
||||
, _notEmptyPassport(getData()->pwdNotEmptyPassport)
|
||||
|
@ -115,7 +114,7 @@ void PasswordCheckWidget::activate() {
|
|||
}
|
||||
|
||||
void PasswordCheckWidget::cancelled() {
|
||||
_api.request(base::take(_sentRequest)).cancel();
|
||||
api()->request(base::take(_sentRequest)).cancel();
|
||||
}
|
||||
|
||||
void PasswordCheckWidget::pwdSubmitDone(bool recover, const MTPauth_Authorization &result) {
|
||||
|
@ -182,8 +181,8 @@ void PasswordCheckWidget::checkPasswordHash() {
|
|||
}
|
||||
|
||||
void PasswordCheckWidget::requestPasswordData() {
|
||||
_api.request(base::take(_sentRequest)).cancel();
|
||||
_sentRequest = _api.request(
|
||||
api()->request(base::take(_sentRequest)).cancel();
|
||||
_sentRequest = api()->request(
|
||||
MTPaccount_GetPassword()
|
||||
).done([=](const MTPaccount_Password &result) {
|
||||
_sentRequest = 0;
|
||||
|
@ -205,13 +204,13 @@ void PasswordCheckWidget::passwordChecked() {
|
|||
return serverError();
|
||||
}
|
||||
_request.id = 0;
|
||||
_sentRequest = _api.request(
|
||||
_sentRequest = api()->request(
|
||||
MTPauth_CheckPassword(check.result)
|
||||
).done([=](const MTPauth_Authorization &result) {
|
||||
pwdSubmitDone(false, result);
|
||||
}).handleFloodErrors().fail([=](const RPCError &error) {
|
||||
}).fail([=](const RPCError &error) {
|
||||
pwdSubmitFail(error);
|
||||
}).send();
|
||||
}).handleFloodErrors().send();
|
||||
}
|
||||
|
||||
void PasswordCheckWidget::serverError() {
|
||||
|
@ -267,7 +266,7 @@ void PasswordCheckWidget::recoverStartFail(const RPCError &error) {
|
|||
void PasswordCheckWidget::toRecover() {
|
||||
if (_hasRecovery) {
|
||||
if (_sentRequest) {
|
||||
_api.request(base::take(_sentRequest)).cancel();
|
||||
api()->request(base::take(_sentRequest)).cancel();
|
||||
}
|
||||
hideError();
|
||||
_toRecover->hide();
|
||||
|
@ -279,7 +278,7 @@ void PasswordCheckWidget::toRecover() {
|
|||
_codeField->setFocus();
|
||||
updateDescriptionText();
|
||||
if (_emailPattern.isEmpty()) {
|
||||
_api.request(
|
||||
api()->request(
|
||||
MTPauth_RequestPasswordRecovery()
|
||||
).done([=](const MTPauth_PasswordRecovery &result) {
|
||||
recoverStarted(result);
|
||||
|
@ -302,7 +301,7 @@ void PasswordCheckWidget::toPassword() {
|
|||
|
||||
void PasswordCheckWidget::showReset() {
|
||||
if (_sentRequest) {
|
||||
_api.request(base::take(_sentRequest)).cancel();
|
||||
api()->request(base::take(_sentRequest)).cancel();
|
||||
}
|
||||
_toRecover->show();
|
||||
_toPassword->hide();
|
||||
|
@ -335,13 +334,13 @@ void PasswordCheckWidget::submit() {
|
|||
return;
|
||||
}
|
||||
const auto send = crl::guard(this, [=] {
|
||||
_sentRequest = _api.request(
|
||||
_sentRequest = api()->request(
|
||||
MTPauth_RecoverPassword(MTP_string(code))
|
||||
).done([=](const MTPauth_Authorization &result) {
|
||||
pwdSubmitDone(true, result);
|
||||
}).handleFloodErrors().fail([=](const RPCError &error) {
|
||||
}).fail([=](const RPCError &error) {
|
||||
codeSubmitFail(error);
|
||||
}).send();
|
||||
}).handleFloodErrors().send();
|
||||
});
|
||||
|
||||
if (_notEmptyPassport) {
|
||||
|
|
|
@ -62,7 +62,6 @@ private:
|
|||
void passwordChecked();
|
||||
void serverError();
|
||||
|
||||
MTP::Sender _api;
|
||||
Core::CloudPasswordCheckRequest _request;
|
||||
crl::time _lastSrpIdInvalidTime = 0;
|
||||
bytes::vector _passwordHash;
|
||||
|
|
|
@ -141,15 +141,17 @@ void PhoneWidget::submit() {
|
|||
_checkRequestTimer.callEach(1000);
|
||||
|
||||
_sentPhone = phone;
|
||||
account().mtp()->setUserPhone(_sentPhone);
|
||||
_sentRequest = MTP::send(
|
||||
MTPauth_SendCode(
|
||||
MTP_string(_sentPhone),
|
||||
MTP_int(ApiId),
|
||||
MTP_string(ApiHash),
|
||||
MTP_codeSettings(MTP_flags(0))),
|
||||
rpcDone(&PhoneWidget::phoneSubmitDone),
|
||||
rpcFail(&PhoneWidget::phoneSubmitFail));
|
||||
api()->instance()->setUserPhone(_sentPhone);
|
||||
_sentRequest = api()->request(MTPauth_SendCode(
|
||||
MTP_string(_sentPhone),
|
||||
MTP_int(ApiId),
|
||||
MTP_string(ApiHash),
|
||||
MTP_codeSettings(MTP_flags(0))
|
||||
)).done([=](const MTPauth_SentCode &result) {
|
||||
phoneSubmitDone(result);
|
||||
}).fail([=](const RPCError &error) {
|
||||
phoneSubmitFail(error);
|
||||
}).handleFloodErrors().send();
|
||||
}
|
||||
|
||||
void PhoneWidget::stopCheck() {
|
||||
|
@ -157,11 +159,11 @@ void PhoneWidget::stopCheck() {
|
|||
}
|
||||
|
||||
void PhoneWidget::checkRequest() {
|
||||
auto status = MTP::state(_sentRequest);
|
||||
auto status = api()->instance()->state(_sentRequest);
|
||||
if (status < 0) {
|
||||
auto leftms = -status;
|
||||
if (leftms >= 1000) {
|
||||
MTP::cancel(base::take(_sentRequest));
|
||||
api()->request(base::take(_sentRequest)).cancel();
|
||||
}
|
||||
}
|
||||
if (!_sentRequest && status == MTP::RequestSent) {
|
||||
|
@ -193,34 +195,28 @@ void PhoneWidget::phoneSubmitDone(const MTPauth_SentCode &result) {
|
|||
goNext<CodeWidget>();
|
||||
}
|
||||
|
||||
bool PhoneWidget::phoneSubmitFail(const RPCError &error) {
|
||||
void PhoneWidget::phoneSubmitFail(const RPCError &error) {
|
||||
if (MTP::isFloodError(error)) {
|
||||
stopCheck();
|
||||
_sentRequest = 0;
|
||||
showPhoneError(tr::lng_flood_error());
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
if (MTP::isDefaultHandledError(error)) return false;
|
||||
|
||||
stopCheck();
|
||||
_sentRequest = 0;
|
||||
auto &err = error.type();
|
||||
if (err == qstr("PHONE_NUMBER_FLOOD")) {
|
||||
Ui::show(Box<InformBox>(tr::lng_error_phone_flood(tr::now)));
|
||||
return true;
|
||||
} else if (err == qstr("PHONE_NUMBER_INVALID")) { // show error
|
||||
showPhoneError(tr::lng_bad_phone());
|
||||
return true;
|
||||
} else if (err == qstr("PHONE_NUMBER_BANNED")) {
|
||||
ShowPhoneBannedError(_sentPhone);
|
||||
return true;
|
||||
}
|
||||
if (Logs::DebugEnabled()) { // internal server error
|
||||
} else if (Logs::DebugEnabled()) { // internal server error
|
||||
showPhoneError(rpl::single(err + ": " + error.description()));
|
||||
} else {
|
||||
showPhoneError(rpl::single(Lang::Hard::ServerError()));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
QString PhoneWidget::fullNumber() const {
|
||||
|
@ -244,13 +240,13 @@ void PhoneWidget::activate() {
|
|||
void PhoneWidget::finished() {
|
||||
Step::finished();
|
||||
_checkRequestTimer.cancel();
|
||||
rpcInvalidate();
|
||||
apiClear();
|
||||
|
||||
cancelled();
|
||||
}
|
||||
|
||||
void PhoneWidget::cancelled() {
|
||||
MTP::cancel(base::take(_sentRequest));
|
||||
api()->request(base::take(_sentRequest)).cancel();
|
||||
}
|
||||
|
||||
} // namespace details
|
||||
|
|
|
@ -50,7 +50,7 @@ private:
|
|||
void countryChanged();
|
||||
|
||||
void phoneSubmitDone(const MTPauth_SentCode &result);
|
||||
bool phoneSubmitFail(const RPCError &error);
|
||||
void phoneSubmitFail(const RPCError &error);
|
||||
|
||||
QString fullNumber() const;
|
||||
void stopCheck();
|
||||
|
|
|
@ -174,7 +174,6 @@ QrWidget::QrWidget(
|
|||
not_null<Main::Account*> account,
|
||||
not_null<Data*> data)
|
||||
: Step(parent, account, data)
|
||||
, _api(account->mtp())
|
||||
, _refreshTimer([=] { refreshCode(); }) {
|
||||
setTitleText(rpl::single(QString()));
|
||||
setDescriptionText(rpl::single(QString()));
|
||||
|
@ -309,7 +308,7 @@ void QrWidget::refreshCode() {
|
|||
if (_requestId) {
|
||||
return;
|
||||
}
|
||||
_requestId = _api.request(MTPauth_ExportLoginToken(
|
||||
_requestId = api()->request(MTPauth_ExportLoginToken(
|
||||
MTP_int(ApiId),
|
||||
MTP_string(ApiHash),
|
||||
MTP_vector<MTPint>(0)
|
||||
|
@ -357,8 +356,8 @@ void QrWidget::showToken(const QByteArray &token) {
|
|||
void QrWidget::importTo(MTP::DcId dcId, const QByteArray &token) {
|
||||
Expects(_requestId != 0);
|
||||
|
||||
_api.instance()->setMainDcId(dcId);
|
||||
_requestId = _api.request(MTPauth_ImportLoginToken(
|
||||
api()->instance()->setMainDcId(dcId);
|
||||
_requestId = api()->request(MTPauth_ImportLoginToken(
|
||||
MTP_bytes(token)
|
||||
)).done([=](const MTPauth_LoginToken &result) {
|
||||
handleTokenResult(result);
|
||||
|
@ -385,7 +384,7 @@ void QrWidget::done(const MTPauth_Authorization &authorization) {
|
|||
}
|
||||
|
||||
void QrWidget::sendCheckPasswordRequest() {
|
||||
_requestId = _api.request(MTPaccount_GetPassword(
|
||||
_requestId = api()->request(MTPaccount_GetPassword(
|
||||
)).done([=](const MTPaccount_Password &result) {
|
||||
result.match([&](const MTPDaccount_password &data) {
|
||||
getData()->pwdRequest = Core::ParseCloudPasswordCheckRequest(
|
||||
|
@ -424,12 +423,12 @@ void QrWidget::activate() {
|
|||
void QrWidget::finished() {
|
||||
Step::finished();
|
||||
_refreshTimer.cancel();
|
||||
rpcInvalidate();
|
||||
apiClear();
|
||||
cancelled();
|
||||
}
|
||||
|
||||
void QrWidget::cancelled() {
|
||||
_api.request(base::take(_requestId)).cancel();
|
||||
api()->request(base::take(_requestId)).cancel();
|
||||
}
|
||||
|
||||
} // namespace details
|
||||
|
|
|
@ -9,7 +9,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
|
||||
#include "ui/countryinput.h"
|
||||
#include "intro/intro_step.h"
|
||||
#include "mtproto/sender.h"
|
||||
#include "base/timer.h"
|
||||
|
||||
namespace Ui {
|
||||
|
@ -53,7 +52,6 @@ private:
|
|||
void showToken(const QByteArray &token);
|
||||
void done(const MTPauth_Authorization &authorization);
|
||||
|
||||
MTP::Sender _api;
|
||||
rpl::event_stream<QByteArray> _qrCodes;
|
||||
base::Timer _refreshTimer;
|
||||
mtpRequestId _requestId = 0;
|
||||
|
|
|
@ -101,7 +101,7 @@ void SignupWidget::activate() {
|
|||
}
|
||||
|
||||
void SignupWidget::cancelled() {
|
||||
MTP::cancel(base::take(_sentRequest));
|
||||
api()->request(base::take(_sentRequest)).cancel();
|
||||
}
|
||||
|
||||
void SignupWidget::nameSubmitDone(const MTPauth_Authorization &result) {
|
||||
|
@ -113,7 +113,7 @@ void SignupWidget::nameSubmitDone(const MTPauth_Authorization &result) {
|
|||
finish(d.vuser(), _photo->takeResultImage());
|
||||
}
|
||||
|
||||
bool SignupWidget::nameSubmitFail(const RPCError &error) {
|
||||
void SignupWidget::nameSubmitFail(const RPCError &error) {
|
||||
if (MTP::isFloodError(error)) {
|
||||
showError(tr::lng_flood_error());
|
||||
if (_invertOrder) {
|
||||
|
@ -121,14 +121,12 @@ bool SignupWidget::nameSubmitFail(const RPCError &error) {
|
|||
} else {
|
||||
_last->setFocus();
|
||||
}
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
if (MTP::isDefaultHandledError(error)) return false;
|
||||
|
||||
auto &err = error.type();
|
||||
if (err == qstr("PHONE_NUMBER_FLOOD")) {
|
||||
Ui::show(Box<InformBox>(tr::lng_error_phone_flood(tr::now)));
|
||||
return true;
|
||||
} else if (err == qstr("PHONE_NUMBER_INVALID")
|
||||
|| err == qstr("PHONE_NUMBER_BANNED")
|
||||
|| err == qstr("PHONE_CODE_EXPIRED")
|
||||
|
@ -136,27 +134,24 @@ bool SignupWidget::nameSubmitFail(const RPCError &error) {
|
|||
|| err == qstr("PHONE_CODE_INVALID")
|
||||
|| err == qstr("PHONE_NUMBER_OCCUPIED")) {
|
||||
goBack();
|
||||
return true;
|
||||
} else if (err == "FIRSTNAME_INVALID") {
|
||||
showError(tr::lng_bad_name());
|
||||
_first->setFocus();
|
||||
return true;
|
||||
} else if (err == "LASTNAME_INVALID") {
|
||||
showError(tr::lng_bad_name());
|
||||
_last->setFocus();
|
||||
return true;
|
||||
}
|
||||
if (Logs::DebugEnabled()) { // internal server error
|
||||
showError(rpl::single(err + ": " + error.description()));
|
||||
} else {
|
||||
showError(rpl::single(Lang::Hard::ServerError()));
|
||||
if (Logs::DebugEnabled()) { // internal server error
|
||||
showError(rpl::single(err + ": " + error.description()));
|
||||
} else {
|
||||
showError(rpl::single(Lang::Hard::ServerError()));
|
||||
}
|
||||
if (_invertOrder) {
|
||||
_last->setFocus();
|
||||
} else {
|
||||
_first->setFocus();
|
||||
}
|
||||
}
|
||||
if (_invertOrder) {
|
||||
_last->setFocus();
|
||||
} else {
|
||||
_first->setFocus();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void SignupWidget::submit() {
|
||||
|
@ -186,14 +181,16 @@ void SignupWidget::submit() {
|
|||
|
||||
_firstName = _first->getLastText().trimmed();
|
||||
_lastName = _last->getLastText().trimmed();
|
||||
_sentRequest = MTP::send(
|
||||
MTPauth_SignUp(
|
||||
MTP_string(getData()->phone),
|
||||
MTP_bytes(getData()->phoneHash),
|
||||
MTP_string(_firstName),
|
||||
MTP_string(_lastName)),
|
||||
rpcDone(&SignupWidget::nameSubmitDone),
|
||||
rpcFail(&SignupWidget::nameSubmitFail));
|
||||
_sentRequest = api()->request(MTPauth_SignUp(
|
||||
MTP_string(getData()->phone),
|
||||
MTP_bytes(getData()->phoneHash),
|
||||
MTP_string(_firstName),
|
||||
MTP_string(_lastName)
|
||||
)).done([=](const MTPauth_Authorization &result) {
|
||||
nameSubmitDone(result);
|
||||
}).fail([=](const RPCError &error) {
|
||||
nameSubmitFail(error);
|
||||
}).handleFloodErrors().send();
|
||||
};
|
||||
if (_termsAccepted
|
||||
|| getData()->termsLock.text.text.isEmpty()
|
||||
|
|
|
@ -40,7 +40,7 @@ private:
|
|||
void updateControlsGeometry();
|
||||
|
||||
void nameSubmitDone(const MTPauth_Authorization &result);
|
||||
bool nameSubmitFail(const RPCError &error);
|
||||
void nameSubmitFail(const RPCError &error);
|
||||
|
||||
object_ptr<Ui::UserpicButton> _photo;
|
||||
object_ptr<Ui::InputField> _first;
|
||||
|
|
|
@ -98,6 +98,17 @@ Step::Step(
|
|||
|
||||
Step::~Step() = default;
|
||||
|
||||
not_null<MTP::Sender*> Step::api() const {
|
||||
if (!_api) {
|
||||
_api.emplace(_account->mtp());
|
||||
}
|
||||
return &*_api;
|
||||
}
|
||||
|
||||
void Step::apiClear() {
|
||||
_api.reset();
|
||||
}
|
||||
|
||||
rpl::producer<QString> Step::nextButtonText() const {
|
||||
return tr::lng_intro_next();
|
||||
}
|
||||
|
|
|
@ -30,10 +30,7 @@ namespace details {
|
|||
struct Data;
|
||||
enum class Direction;
|
||||
|
||||
class Step
|
||||
: public Ui::RpWidget
|
||||
, public RPCSender
|
||||
, protected base::Subscriber {
|
||||
class Step : public Ui::RpWidget, protected base::Subscriber {
|
||||
public:
|
||||
Step(
|
||||
QWidget *parent,
|
||||
|
@ -46,6 +43,11 @@ public:
|
|||
return *_account;
|
||||
}
|
||||
|
||||
// It should not be called in StartWidget, in other steps it should be
|
||||
// present and not changing.
|
||||
[[nodiscard]] not_null<MTP::Sender*> api() const;
|
||||
void apiClear();
|
||||
|
||||
virtual void finishInit() {
|
||||
}
|
||||
virtual void setInnerFocus() {
|
||||
|
@ -167,6 +169,7 @@ private:
|
|||
|
||||
const not_null<Main::Account*> _account;
|
||||
const not_null<Data*> _data;
|
||||
mutable std::optional<MTP::Sender> _api;
|
||||
|
||||
bool _hasCover = false;
|
||||
Fn<void(Step *step, Direction direction)> _goCallback;
|
||||
|
|
|
@ -277,7 +277,7 @@ void Uploader::currentFailed() {
|
|||
|
||||
void Uploader::stopSessions() {
|
||||
for (int i = 0; i < MTP::kUploadSessionsCount; ++i) {
|
||||
MTP::stopSession(MTP::uploadDcId(i));
|
||||
_api->instance()->stopSession(MTP::uploadDcId(i));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -440,24 +440,26 @@ void Uploader::sendNext() {
|
|||
}
|
||||
mtpRequestId requestId;
|
||||
if (uploadingData.docSize > kUseBigFilesFrom) {
|
||||
requestId = MTP::send(
|
||||
MTPupload_SaveBigFilePart(
|
||||
MTP_long(uploadingData.id()),
|
||||
MTP_int(uploadingData.docSentParts),
|
||||
MTP_int(uploadingData.docPartsCount),
|
||||
MTP_bytes(toSend)),
|
||||
rpcDone(&Uploader::partLoaded),
|
||||
rpcFail(&Uploader::partFailed),
|
||||
MTP::uploadDcId(todc));
|
||||
requestId = _api->request(MTPupload_SaveBigFilePart(
|
||||
MTP_long(uploadingData.id()),
|
||||
MTP_int(uploadingData.docSentParts),
|
||||
MTP_int(uploadingData.docPartsCount),
|
||||
MTP_bytes(toSend)
|
||||
)).done([=](const MTPBool &result, mtpRequestId requestId) {
|
||||
partLoaded(result, requestId);
|
||||
}).fail([=](const RPCError &error, mtpRequestId requestId) {
|
||||
partFailed(error, requestId);
|
||||
}).toDC(MTP::uploadDcId(todc)).send();
|
||||
} else {
|
||||
requestId = MTP::send(
|
||||
MTPupload_SaveFilePart(
|
||||
MTP_long(uploadingData.id()),
|
||||
MTP_int(uploadingData.docSentParts),
|
||||
MTP_bytes(toSend)),
|
||||
rpcDone(&Uploader::partLoaded),
|
||||
rpcFail(&Uploader::partFailed),
|
||||
MTP::uploadDcId(todc));
|
||||
requestId = _api->request(MTPupload_SaveFilePart(
|
||||
MTP_long(uploadingData.id()),
|
||||
MTP_int(uploadingData.docSentParts),
|
||||
MTP_bytes(toSend)
|
||||
)).done([=](const MTPBool &result, mtpRequestId requestId) {
|
||||
partLoaded(result, requestId);
|
||||
}).fail([=](const RPCError &error, mtpRequestId requestId) {
|
||||
partFailed(error, requestId);
|
||||
}).toDC(MTP::uploadDcId(todc)).send();
|
||||
}
|
||||
docRequestsSent.emplace(requestId, uploadingData.docSentParts);
|
||||
dcMap.emplace(requestId, todc);
|
||||
|
@ -468,14 +470,15 @@ void Uploader::sendNext() {
|
|||
} else {
|
||||
auto part = parts.begin();
|
||||
|
||||
const auto requestId = MTP::send(
|
||||
MTPupload_SaveFilePart(
|
||||
MTP_long(partsOfId),
|
||||
MTP_int(part.key()),
|
||||
MTP_bytes(part.value())),
|
||||
rpcDone(&Uploader::partLoaded),
|
||||
rpcFail(&Uploader::partFailed),
|
||||
MTP::uploadDcId(todc));
|
||||
const auto requestId = _api->request(MTPupload_SaveFilePart(
|
||||
MTP_long(partsOfId),
|
||||
MTP_int(part.key()),
|
||||
MTP_bytes(part.value())
|
||||
)).done([=](const MTPBool &result, mtpRequestId requestId) {
|
||||
partLoaded(result, requestId);
|
||||
}).fail([=](const RPCError &error, mtpRequestId requestId) {
|
||||
partFailed(error, requestId);
|
||||
}).toDC(MTP::uploadDcId(todc)).send();
|
||||
requestsSent.emplace(requestId, part.value());
|
||||
dcMap.emplace(requestId, todc);
|
||||
sentSize += part.value().size();
|
||||
|
@ -511,17 +514,17 @@ void Uploader::clear() {
|
|||
uploaded.clear();
|
||||
queue.clear();
|
||||
for (const auto &requestData : requestsSent) {
|
||||
MTP::cancel(requestData.first);
|
||||
_api->request(requestData.first).cancel();
|
||||
}
|
||||
requestsSent.clear();
|
||||
for (const auto &requestData : docRequestsSent) {
|
||||
MTP::cancel(requestData.first);
|
||||
_api->request(requestData.first).cancel();
|
||||
}
|
||||
docRequestsSent.clear();
|
||||
dcMap.clear();
|
||||
sentSize = 0;
|
||||
for (int i = 0; i < MTP::kUploadSessionsCount; ++i) {
|
||||
MTP::stopSession(MTP::uploadDcId(i));
|
||||
_api->instance()->stopSession(MTP::uploadDcId(i));
|
||||
sentSizes[i] = 0;
|
||||
}
|
||||
stopSessionsTimer.stop();
|
||||
|
@ -592,16 +595,13 @@ void Uploader::partLoaded(const MTPBool &result, mtpRequestId requestId) {
|
|||
sendNext();
|
||||
}
|
||||
|
||||
bool Uploader::partFailed(const RPCError &error, mtpRequestId requestId) {
|
||||
if (MTP::isDefaultHandledError(error)) return false;
|
||||
|
||||
void Uploader::partFailed(const RPCError &error, mtpRequestId requestId) {
|
||||
// failed to upload current file
|
||||
if ((requestsSent.find(requestId) != requestsSent.cend())
|
||||
|| (docRequestsSent.find(requestId) != docRequestsSent.cend())) {
|
||||
currentFailed();
|
||||
}
|
||||
sendNext();
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace Storage
|
||||
|
|
|
@ -119,7 +119,7 @@ private:
|
|||
struct File;
|
||||
|
||||
void partLoaded(const MTPBool &result, mtpRequestId requestId);
|
||||
bool partFailed(const RPCError &err, mtpRequestId requestId);
|
||||
void partFailed(const RPCError &error, mtpRequestId requestId);
|
||||
|
||||
void currentFailed();
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue