Show errors when logging in in the account dialog.

This commit is contained in:
Petr Mrázek 2013-12-22 19:47:58 +01:00
parent 3051d0d328
commit 77ddf8b5d7
3 changed files with 24 additions and 13 deletions

View File

@ -26,7 +26,9 @@
#include <gui/dialogs/EditAccountDialog.h> #include <gui/dialogs/EditAccountDialog.h>
#include <gui/dialogs/ProgressDialog.h> #include <gui/dialogs/ProgressDialog.h>
#include <gui/dialogs/AccountSelectDialog.h> #include <gui/dialogs/AccountSelectDialog.h>
#include "CustomMessageBox.h"
#include <logic/tasks/Task.h> #include <logic/tasks/Task.h>
#include <logic/auth/YggdrasilTask.h>
#include <MultiMC.h> #include <MultiMC.h>
@ -147,5 +149,12 @@ void AccountListDialog::addAccount(const QString& errMsg)
job->start(); job->start();
} }
else
{
auto reason = task->failReason();
auto dlg = CustomMessageBox::selectable(this, tr("Login error."), reason, QMessageBox::Critical);
dlg->exec();
delete dlg;
}
} }
} }

View File

@ -32,7 +32,8 @@ MojangAccountPtr MojangAccount::loadFromJson(const QJsonObject &object)
// The JSON object must at least have a username for it to be valid. // The JSON object must at least have a username for it to be valid.
if (!object.value("username").isString()) if (!object.value("username").isString())
{ {
QLOG_ERROR() << "Can't load Mojang account info from JSON object. Username field is missing or of the wrong type."; QLOG_ERROR() << "Can't load Mojang account info from JSON object. Username field is "
"missing or of the wrong type.";
return nullptr; return nullptr;
} }
@ -43,7 +44,8 @@ MojangAccountPtr MojangAccount::loadFromJson(const QJsonObject &object)
QJsonArray profileArray = object.value("profiles").toArray(); QJsonArray profileArray = object.value("profiles").toArray();
if (profileArray.size() < 1) if (profileArray.size() < 1)
{ {
QLOG_ERROR() << "Can't load Mojang account with username \"" << username << "\". No profiles found."; QLOG_ERROR() << "Can't load Mojang account with username \"" << username
<< "\". No profiles found.";
return nullptr; return nullptr;
} }
@ -63,7 +65,7 @@ MojangAccountPtr MojangAccount::loadFromJson(const QJsonObject &object)
} }
MojangAccountPtr account(new MojangAccount()); MojangAccountPtr account(new MojangAccount());
if(object.value("user").isObject()) if (object.value("user").isObject())
{ {
User u; User u;
QJsonObject userStructure = object.value("user").toObject(); QJsonObject userStructure = object.value("user").toObject();
@ -92,7 +94,7 @@ MojangAccountPtr MojangAccount::loadFromJson(const QJsonObject &object)
return account; return account;
} }
MojangAccountPtr MojangAccount::createFromUsername(const QString& username) MojangAccountPtr MojangAccount::createFromUsername(const QString &username)
{ {
MojangAccountPtr account(new MojangAccount()); MojangAccountPtr account(new MojangAccount());
account->m_clientToken = QUuid::createUuid().toString().remove(QRegExp("[{}-]")); account->m_clientToken = QUuid::createUuid().toString().remove(QRegExp("[{}-]"));
@ -152,27 +154,27 @@ bool MojangAccount::setCurrentProfile(const QString &profileId)
return false; return false;
} }
const AccountProfile* MojangAccount::currentProfile() const const AccountProfile *MojangAccount::currentProfile() const
{ {
if(m_currentProfile == -1) if (m_currentProfile == -1)
return nullptr; return nullptr;
return &m_profiles[m_currentProfile]; return &m_profiles[m_currentProfile];
} }
AccountStatus MojangAccount::accountStatus() const AccountStatus MojangAccount::accountStatus() const
{ {
if(m_accessToken.isEmpty()) if (m_accessToken.isEmpty())
return NotVerified; return NotVerified;
if(!m_online) if (!m_online)
return Verified; return Verified;
return Online; return Online;
} }
std::shared_ptr<Task> MojangAccount::login(QString password) std::shared_ptr<YggdrasilTask> MojangAccount::login(QString password)
{ {
if(m_currentTask) if (m_currentTask)
return m_currentTask; return m_currentTask;
if(password.isEmpty()) if (password.isEmpty())
{ {
m_currentTask.reset(new RefreshTask(this)); m_currentTask.reset(new RefreshTask(this));
} }
@ -196,7 +198,7 @@ void MojangAccount::authFailed(QString reason)
{ {
// This is emitted when the yggdrasil tasks time out or are cancelled. // This is emitted when the yggdrasil tasks time out or are cancelled.
// -> we treat the error as no-op // -> we treat the error as no-op
if(reason != "Yggdrasil task cancelled.") if (reason != "Yggdrasil task cancelled.")
{ {
m_online = false; m_online = false;
m_accessToken = QString(); m_accessToken = QString();

View File

@ -95,7 +95,7 @@ public: /* manipulation */
* Attempt to login. Empty password means we use the token. * Attempt to login. Empty password means we use the token.
* If the attempt fails because we already are performing some task, it returns false. * If the attempt fails because we already are performing some task, it returns false.
*/ */
std::shared_ptr<Task> login(QString password = QString()); std::shared_ptr<YggdrasilTask> login(QString password = QString());
void downgrade() void downgrade()
{ {