summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-12-22 19:47:58 +0100
committerPetr Mrázek <peterix@gmail.com>2013-12-22 19:47:58 +0100
commit77ddf8b5d79caf0176ac2647e539272ee3e07d7a (patch)
tree28a93e681719bb6b1a2996603b1d7c170c98ddba
parent3051d0d3283656baafe6021e5036fdca9db0c4aa (diff)
downloadMultiMC-77ddf8b5d79caf0176ac2647e539272ee3e07d7a.tar
MultiMC-77ddf8b5d79caf0176ac2647e539272ee3e07d7a.tar.gz
MultiMC-77ddf8b5d79caf0176ac2647e539272ee3e07d7a.tar.lz
MultiMC-77ddf8b5d79caf0176ac2647e539272ee3e07d7a.tar.xz
MultiMC-77ddf8b5d79caf0176ac2647e539272ee3e07d7a.zip
Show errors when logging in in the account dialog.
-rw-r--r--gui/dialogs/AccountListDialog.cpp9
-rw-r--r--logic/auth/MojangAccount.cpp26
-rw-r--r--logic/auth/MojangAccount.h2
3 files changed, 24 insertions, 13 deletions
diff --git a/gui/dialogs/AccountListDialog.cpp b/gui/dialogs/AccountListDialog.cpp
index 242590fb..1712e352 100644
--- a/gui/dialogs/AccountListDialog.cpp
+++ b/gui/dialogs/AccountListDialog.cpp
@@ -26,7 +26,9 @@
#include <gui/dialogs/EditAccountDialog.h>
#include <gui/dialogs/ProgressDialog.h>
#include <gui/dialogs/AccountSelectDialog.h>
+#include "CustomMessageBox.h"
#include <logic/tasks/Task.h>
+#include <logic/auth/YggdrasilTask.h>
#include <MultiMC.h>
@@ -147,5 +149,12 @@ void AccountListDialog::addAccount(const QString& errMsg)
job->start();
}
+ else
+ {
+ auto reason = task->failReason();
+ auto dlg = CustomMessageBox::selectable(this, tr("Login error."), reason, QMessageBox::Critical);
+ dlg->exec();
+ delete dlg;
+ }
}
}
diff --git a/logic/auth/MojangAccount.cpp b/logic/auth/MojangAccount.cpp
index bc6af98f..a462eda5 100644
--- a/logic/auth/MojangAccount.cpp
+++ b/logic/auth/MojangAccount.cpp
@@ -32,7 +32,8 @@ MojangAccountPtr MojangAccount::loadFromJson(const QJsonObject &object)
// The JSON object must at least have a username for it to be valid.
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;
}
@@ -43,7 +44,8 @@ MojangAccountPtr MojangAccount::loadFromJson(const QJsonObject &object)
QJsonArray profileArray = object.value("profiles").toArray();
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;
}
@@ -63,7 +65,7 @@ MojangAccountPtr MojangAccount::loadFromJson(const QJsonObject &object)
}
MojangAccountPtr account(new MojangAccount());
- if(object.value("user").isObject())
+ if (object.value("user").isObject())
{
User u;
QJsonObject userStructure = object.value("user").toObject();
@@ -92,7 +94,7 @@ MojangAccountPtr MojangAccount::loadFromJson(const QJsonObject &object)
return account;
}
-MojangAccountPtr MojangAccount::createFromUsername(const QString& username)
+MojangAccountPtr MojangAccount::createFromUsername(const QString &username)
{
MojangAccountPtr account(new MojangAccount());
account->m_clientToken = QUuid::createUuid().toString().remove(QRegExp("[{}-]"));
@@ -152,27 +154,27 @@ bool MojangAccount::setCurrentProfile(const QString &profileId)
return false;
}
-const AccountProfile* MojangAccount::currentProfile() const
+const AccountProfile *MojangAccount::currentProfile() const
{
- if(m_currentProfile == -1)
+ if (m_currentProfile == -1)
return nullptr;
return &m_profiles[m_currentProfile];
}
AccountStatus MojangAccount::accountStatus() const
{
- if(m_accessToken.isEmpty())
+ if (m_accessToken.isEmpty())
return NotVerified;
- if(!m_online)
+ if (!m_online)
return Verified;
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;
- if(password.isEmpty())
+ if (password.isEmpty())
{
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.
// -> we treat the error as no-op
- if(reason != "Yggdrasil task cancelled.")
+ if (reason != "Yggdrasil task cancelled.")
{
m_online = false;
m_accessToken = QString();
diff --git a/logic/auth/MojangAccount.h b/logic/auth/MojangAccount.h
index 325aa826..dd5d54ae 100644
--- a/logic/auth/MojangAccount.h
+++ b/logic/auth/MojangAccount.h
@@ -95,7 +95,7 @@ public: /* manipulation */
* Attempt to login. Empty password means we use the token.
* 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()
{