show error code in dialog, change text for no internet

Signed-off-by: Tayou <git@tayou.org>
This commit is contained in:
Tayou 2026-06-11 17:24:30 +02:00
parent 768d12259b
commit d71cfc33a2
No known key found for this signature in database
GPG key ID: AAAF6C17E5E51872
6 changed files with 17 additions and 2 deletions

View file

@ -41,6 +41,7 @@
#include "minecraft/auth/AccountList.h" #include "minecraft/auth/AccountList.h"
#include "ui/InstanceWindow.h" #include "ui/InstanceWindow.h"
#include "net/NetUtils.h"
#include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/CustomMessageBox.h"
#include "ui/dialogs/MSALoginDialog.h" #include "ui/dialogs/MSALoginDialog.h"
#include "ui/dialogs/ProfileSelectDialog.h" #include "ui/dialogs/ProfileSelectDialog.h"
@ -185,8 +186,16 @@ LaunchDecision LaunchController::decideLaunchMode()
case AccountState::Offline: { case AccountState::Offline: {
if (m_wantedLaunchMode == LaunchMode::Normal) { if (m_wantedLaunchMode == LaunchMode::Normal) {
QMessageBox msg(m_parentWidget); QMessageBox msg(m_parentWidget);
auto netErr = accountToCheck->accountData()->networkError;
if (Net::isServerError(netErr)) {
msg.setWindowTitle(tr("Auth servers offline")); msg.setWindowTitle(tr("Auth servers offline"));
msg.setText(tr("The Minecraft authentication servers are currently unavailable.")); msg.setText(tr("The Minecraft authentication servers are currently unavailable.\n\n%1").arg(accountToCheck->lastError()));
} else {
msg.setWindowTitle(tr("No internet connection"));
msg.setText(tr("Unable to connect to the internet.\n\n%1").arg(accountToCheck->lastError()));
}
msg.setIcon(QMessageBox::Warning); msg.setIcon(QMessageBox::Warning);
auto* launchOfflineButton = msg.addButton(tr("Launch Offline"), QMessageBox::AcceptRole); auto* launchOfflineButton = msg.addButton(tr("Launch Offline"), QMessageBox::AcceptRole);

View file

@ -41,6 +41,7 @@
#include <QDateTime> #include <QDateTime>
#include <QMap> #include <QMap>
#include <QNetworkReply>
#include <QVariantMap> #include <QVariantMap>
enum class Validity { None, Assumed, Certain }; enum class Validity { None, Assumed, Certain };
@ -118,5 +119,6 @@ struct AccountData {
// runtime only information (not saved with the account) // runtime only information (not saved with the account)
QString internalId; QString internalId;
QString errorString; QString errorString;
QNetworkReply::NetworkError networkError = QNetworkReply::NoError;
AccountState accountState = AccountState::Unchecked; AccountState accountState = AccountState::Unchecked;
}; };

View file

@ -60,6 +60,7 @@ void LauncherLoginStep::onRequestDone(QByteArray* response)
emit finished(AccountTaskState::STATE_FAILED_SOFT, emit finished(AccountTaskState::STATE_FAILED_SOFT,
tr("Failed to get Minecraft access token: %1").arg(m_request->errorString())); tr("Failed to get Minecraft access token: %1").arg(m_request->errorString()));
} else { } else {
m_data->networkError = m_request->error();
emit finished(AccountTaskState::STATE_OFFLINE, tr("Failed to get Minecraft access token: %1").arg(m_request->errorString())); emit finished(AccountTaskState::STATE_OFFLINE, tr("Failed to get Minecraft access token: %1").arg(m_request->errorString()));
} }
return; return;

View file

@ -56,6 +56,7 @@ void MinecraftProfileStep::onRequestDone(QByteArray* response)
emit finished(AccountTaskState::STATE_FAILED_SOFT, emit finished(AccountTaskState::STATE_FAILED_SOFT,
tr("Minecraft Java profile acquisition failed: %1").arg(m_request->errorString())); tr("Minecraft Java profile acquisition failed: %1").arg(m_request->errorString()));
} else { } else {
m_data->networkError = m_request->error();
emit finished(AccountTaskState::STATE_OFFLINE, emit finished(AccountTaskState::STATE_OFFLINE,
tr("Minecraft Java profile acquisition failed: %1").arg(m_request->errorString())); tr("Minecraft Java profile acquisition failed: %1").arg(m_request->errorString()));
} }

View file

@ -67,6 +67,7 @@ void XboxAuthorizationStep::onRequestDone(QByteArray* response)
emit finished(AccountTaskState::STATE_FAILED_SOFT, emit finished(AccountTaskState::STATE_FAILED_SOFT,
tr("Unknown STS error for %1 services: %2").arg(m_authorizationKind, m_request->errorString())); tr("Unknown STS error for %1 services: %2").arg(m_authorizationKind, m_request->errorString()));
} else { } else {
m_data->networkError = m_request->error();
emit finished(AccountTaskState::STATE_OFFLINE, emit finished(AccountTaskState::STATE_OFFLINE,
tr("Failed to get authorization for %1 services: %2").arg(m_authorizationKind, m_request->errorString())); tr("Failed to get authorization for %1 services: %2").arg(m_authorizationKind, m_request->errorString()));
} }

View file

@ -59,6 +59,7 @@ void XboxUserStep::onRequestDone(QByteArray* response)
if (Net::isApplicationError(m_request->error()) && !Net::isServerError(m_request->error())) { if (Net::isApplicationError(m_request->error()) && !Net::isServerError(m_request->error())) {
emit finished(AccountTaskState::STATE_FAILED_SOFT, tr("Xbox user authentication failed: %1").arg(m_request->errorString())); emit finished(AccountTaskState::STATE_FAILED_SOFT, tr("Xbox user authentication failed: %1").arg(m_request->errorString()));
} else { } else {
m_data->networkError = m_request->error();
emit finished(AccountTaskState::STATE_OFFLINE, tr("Xbox user authentication failed: %1").arg(m_request->errorString())); emit finished(AccountTaskState::STATE_OFFLINE, tr("Xbox user authentication failed: %1").arg(m_request->errorString()));
} }
return; return;