Extracted reauthenticateCurrentAccount as a separate function

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2023-11-23 12:22:31 +02:00
parent 2863a691ef
commit ceb88a170e
No known key found for this signature in database
GPG Key ID: 55EF5DA53DB36318
2 changed files with 31 additions and 23 deletions

View File

@ -258,29 +258,8 @@ void LaunchController::login()
continue; continue;
} }
case AccountState::Expired: { case AccountState::Expired: {
auto errorString = tr("The account has expired and needs to be logged into manually. Press OK to log in again."); if (reauthenticateCurrentAccount())
auto button = QMessageBox::warning(m_parentWidget, tr("Account refresh failed"), errorString,
QMessageBox::StandardButton::Ok | QMessageBox::StandardButton::Cancel,
QMessageBox::StandardButton::Ok);
if (button == QMessageBox::StandardButton::Ok) {
auto accounts = APPLICATION->accounts();
bool isDefault = accounts->defaultAccount() == m_accountToUse;
accounts->removeAccount(accounts->index(accounts->findAccountByProfileId(m_accountToUse->profileId())));
if (m_accountToUse->isMSA()) {
auto newAccount = MSALoginDialog::newAccount(
m_parentWidget, tr("Please enter your Mojang account email and password to add your account."));
accounts->addAccount(newAccount);
if (isDefault) {
accounts->setDefaultAccount(newAccount);
}
m_accountToUse = nullptr;
decideAccount();
continue; continue;
}
emitFailed(tr("Account expired and re-login attempt failed"));
} else {
emitFailed(errorString);
}
return; return;
} }
case AccountState::Disabled: { case AccountState::Disabled: {
@ -304,6 +283,34 @@ void LaunchController::login()
emitFailed(tr("Failed to launch.")); emitFailed(tr("Failed to launch."));
} }
bool LaunchController::reauthenticateCurrentAccount()
{
auto button =
QMessageBox::warning(m_parentWidget, tr("Account refresh failed"),
tr("The account has expired and needs to be reauthenticated. Do you want to reauthenticate this account?"),
QMessageBox::StandardButton::Yes | QMessageBox::StandardButton::No, QMessageBox::StandardButton::Yes);
if (button == QMessageBox::StandardButton::Yes) {
auto accounts = APPLICATION->accounts();
bool isDefault = accounts->defaultAccount() == m_accountToUse;
accounts->removeAccount(accounts->index(accounts->findAccountByProfileId(m_accountToUse->profileId())));
if (m_accountToUse->isMSA()) {
auto newAccount =
MSALoginDialog::newAccount(m_parentWidget, tr("Please enter your Mojang account email and password to add your account."));
accounts->addAccount(newAccount);
if (isDefault) {
accounts->setDefaultAccount(newAccount);
}
m_accountToUse = nullptr;
decideAccount();
return true;
}
emitFailed(tr("Account expired and re-login attempt failed"));
} else {
emitFailed(tr("The account has expired and needs to be reauthenticated"));
}
return false;
}
void LaunchController::launchInstance() void LaunchController::launchInstance()
{ {
Q_ASSERT_X(m_instance != NULL, "launchInstance", "instance is NULL"); Q_ASSERT_X(m_instance != NULL, "launchInstance", "instance is NULL");

View File

@ -74,6 +74,7 @@ class LaunchController : public Task {
void login(); void login();
void launchInstance(); void launchInstance();
void decideAccount(); void decideAccount();
bool reauthenticateCurrentAccount();
private slots: private slots:
void readyForLaunch(); void readyForLaunch();