From 0a56b562864ce56d14a9657681f221e91dfba129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 3 Dec 2017 14:05:35 +0100 Subject: NOISSUE in offline mode, do not contact the auth server if there is a valid account already --- api/logic/minecraft/auth/MojangAccount.cpp | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'api/logic') diff --git a/api/logic/minecraft/auth/MojangAccount.cpp b/api/logic/minecraft/auth/MojangAccount.cpp index f4c628a6..08047438 100644 --- a/api/logic/minecraft/auth/MojangAccount.cpp +++ b/api/logic/minecraft/auth/MojangAccount.cpp @@ -170,8 +170,7 @@ AccountStatus MojangAccount::accountStatus() const return Verified; } -std::shared_ptr MojangAccount::login(AuthSessionPtr session, - QString password) +std::shared_ptr MojangAccount::login(AuthSessionPtr session, QString password) { Q_ASSERT(m_currentTask.get() == nullptr); @@ -186,18 +185,28 @@ std::shared_ptr MojangAccount::login(AuthSessionPtr session, return nullptr; } - if (password.isEmpty()) + if(accountStatus() == Verified && !session->wants_online) { - m_currentTask.reset(new RefreshTask(this)); + session->status = AuthSession::PlayableOffline; + session->auth_server_online = false; + fillSession(session); + return nullptr; } else { - m_currentTask.reset(new AuthenticateTask(this, password)); - } - m_currentTask->assignSession(session); + if (password.isEmpty()) + { + m_currentTask.reset(new RefreshTask(this)); + } + else + { + m_currentTask.reset(new AuthenticateTask(this, password)); + } + m_currentTask->assignSession(session); - connect(m_currentTask.get(), SIGNAL(succeeded()), SLOT(authSucceeded())); - connect(m_currentTask.get(), SIGNAL(failed(QString)), SLOT(authFailed(QString))); + connect(m_currentTask.get(), SIGNAL(succeeded()), SLOT(authSucceeded())); + connect(m_currentTask.get(), SIGNAL(failed(QString)), SLOT(authFailed(QString))); + } return m_currentTask; } -- cgit v1.2.3