From 4358e28d7e58a6410dbc95c7e19332e75bd70e40 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 31 Dec 2024 14:33:36 +0200 Subject: [PATCH 1/3] improve profile setup error message Signed-off-by: Trial97 --- launcher/ui/dialogs/ProfileSetupDialog.cpp | 31 +++++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/launcher/ui/dialogs/ProfileSetupDialog.cpp b/launcher/ui/dialogs/ProfileSetupDialog.cpp index a6512784f..4d9040785 100644 --- a/launcher/ui/dialogs/ProfileSetupDialog.cpp +++ b/launcher/ui/dialogs/ProfileSetupDialog.cpp @@ -226,14 +226,17 @@ struct MojangError { static MojangError fromJSON(QByteArray data) { MojangError out; - out.error = QString::fromUtf8(data); + out.rawError = QString::fromUtf8(data); auto doc = QJsonDocument::fromJson(data, &out.parseError); - auto object = doc.object(); - out.fullyParsed = true; - out.fullyParsed &= Parsers::getString(object.value("path"), out.path); - out.fullyParsed &= Parsers::getString(object.value("error"), out.error); - out.fullyParsed &= Parsers::getString(object.value("errorMessage"), out.errorMessage); + out.fullyParsed = false; + if (!out.parseError.error) { + auto object = doc.object(); + out.fullyParsed = true; + out.fullyParsed &= Parsers::getString(object.value("path"), out.path); + out.fullyParsed &= Parsers::getString(object.value("error"), out.error); + out.fullyParsed &= Parsers::getString(object.value("errorMessage"), out.errorMessage); + } return out; } @@ -261,7 +264,21 @@ void ProfileSetupDialog::setupProfileFinished() } else { auto parsedError = MojangError::fromJSON(*m_profile_response); ui->errorLabel->setVisible(true); - ui->errorLabel->setText(tr("The server returned the following error:") + "\n\n" + parsedError.errorMessage); + + QString errorMessage = tr("Network error(%1): %2 ;HTTP Status: %3") + .arg(QString::number(m_profile_task->error()), m_profile_task->errorString(), + QString::number(m_profile_task->replyStatusCode())); + + if (parsedError.fullyParsed) { + errorMessage += "Path: " + parsedError.path + "\n"; + errorMessage += "Error: " + parsedError.error + "\n"; + errorMessage += "Error message: " + parsedError.errorMessage + "\n"; + } else { + errorMessage += "Failed to parse Mojang error: " + parsedError.parseError.errorString() + "\n"; + errorMessage += "Raw contents:\n" + parsedError.rawError + "\n"; + } + + ui->errorLabel->setText(tr("The server returned the following error:") + "\n\n" + errorMessage); qDebug() << parsedError.rawError; auto button = ui->buttonBox->button(QDialogButtonBox::Cancel); button->setEnabled(true); From 0a71b19509c9900dcb61215ab6c25802808b05d5 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Fri, 17 Jan 2025 08:53:10 +0200 Subject: [PATCH 2/3] Apply suggestions from code review Co-authored-by: seth Signed-off-by: Alexandru Ionut Tripon --- launcher/ui/dialogs/ProfileSetupDialog.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/ui/dialogs/ProfileSetupDialog.cpp b/launcher/ui/dialogs/ProfileSetupDialog.cpp index 4d9040785..3869ca85b 100644 --- a/launcher/ui/dialogs/ProfileSetupDialog.cpp +++ b/launcher/ui/dialogs/ProfileSetupDialog.cpp @@ -265,17 +265,17 @@ void ProfileSetupDialog::setupProfileFinished() auto parsedError = MojangError::fromJSON(*m_profile_response); ui->errorLabel->setVisible(true); - QString errorMessage = tr("Network error(%1): %2 ;HTTP Status: %3") + QString errorMessage = tr("Network error(%1): %2: HTTP Status: %3") .arg(QString::number(m_profile_task->error()), m_profile_task->errorString(), QString::number(m_profile_task->replyStatusCode())); if (parsedError.fullyParsed) { errorMessage += "Path: " + parsedError.path + "\n"; errorMessage += "Error: " + parsedError.error + "\n"; - errorMessage += "Error message: " + parsedError.errorMessage + "\n"; + errorMessage += "Message: " + parsedError.errorMessage + "\n"; } else { - errorMessage += "Failed to parse Mojang error: " + parsedError.parseError.errorString() + "\n"; - errorMessage += "Raw contents:\n" + parsedError.rawError + "\n"; + errorMessage += "Failed to parse error from Mojang API: " + parsedError.parseError.errorString() + "\n"; + errorMessage += "Log:\n" + parsedError.rawError + "\n"; } ui->errorLabel->setText(tr("The server returned the following error:") + "\n\n" + errorMessage); From 38d3f14f06214d4231b6a0955f2ae4d490ed970f Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 21 Jan 2025 16:45:40 +0200 Subject: [PATCH 3/3] Apply suggestions from code review Co-authored-by: TheKodeToad Signed-off-by: Alexandru Ionut Tripon --- launcher/ui/dialogs/ProfileSetupDialog.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/ui/dialogs/ProfileSetupDialog.cpp b/launcher/ui/dialogs/ProfileSetupDialog.cpp index 3869ca85b..dd87b249c 100644 --- a/launcher/ui/dialogs/ProfileSetupDialog.cpp +++ b/launcher/ui/dialogs/ProfileSetupDialog.cpp @@ -265,9 +265,9 @@ void ProfileSetupDialog::setupProfileFinished() auto parsedError = MojangError::fromJSON(*m_profile_response); ui->errorLabel->setVisible(true); - QString errorMessage = tr("Network error(%1): %2: HTTP Status: %3") - .arg(QString::number(m_profile_task->error()), m_profile_task->errorString(), - QString::number(m_profile_task->replyStatusCode())); + QString errorMessage = + tr("Network Error: %1\nHTTP Status: %2").arg(m_profile_task->errorString(), QString::number(m_profile_task->replyStatusCode())); + if (parsedError.fullyParsed) { errorMessage += "Path: " + parsedError.path + "\n"; @@ -278,7 +278,7 @@ void ProfileSetupDialog::setupProfileFinished() errorMessage += "Log:\n" + parsedError.rawError + "\n"; } - ui->errorLabel->setText(tr("The server returned the following error:") + "\n\n" + errorMessage); + ui->errorLabel->setText(tr("The server responded with the following error:") + "\n\n" + errorMessage); qDebug() << parsedError.rawError; auto button = ui->buttonBox->button(QDialogButtonBox::Cancel); button->setEnabled(true);