fix: 优化客户端错误提示和校验诊断信息

This commit is contained in:
2026-07-21 03:02:42 +00:00
parent 1c8ec37d2b
commit d9e32c6cea
14 changed files with 1739 additions and 627 deletions
+33 -18
View File
@@ -1,5 +1,6 @@
#include "LocalStateHelper.h"
#include "ConfigHelper.h"
#include <QCoreApplication>
#include <QDir>
#include <QFile>
#include <QJsonDocument>
@@ -29,30 +30,39 @@ bool LocalStateHelper::loadState(const QString& relativePath)
{"last_success_version", QString()}
};
m_loaded = true;
if (!saveState())
{
m_error = QString("Cannot write new state file: %1").arg(m_filePath);
return false;
}
return true;
if (!saveState())
{
m_error = QCoreApplication::translate(
"LocalStateHelper",
"Cannot create local state file: %1. Error: %2.")
.arg(m_filePath, m_error);
return false;
}
return true;
}
if (!file.open(QIODevice::ReadOnly))
{
m_error = QString("Cannot open state file: %1").arg(m_filePath);
return false;
}
if (!file.open(QIODevice::ReadOnly))
{
m_error = QCoreApplication::translate(
"LocalStateHelper",
"Cannot open local state file: %1. Error: %2.")
.arg(m_filePath, file.errorString());
return false;
}
QByteArray raw = file.readAll();
file.close();
QJsonParseError parseError;
QJsonDocument doc = QJsonDocument::fromJson(raw, &parseError);
if (parseError.error != QJsonParseError::NoError || !doc.isObject())
{
m_error = QString("Invalid state JSON: %1").arg(parseError.errorString());
return false;
}
if (parseError.error != QJsonParseError::NoError || !doc.isObject())
{
m_error = QCoreApplication::translate(
"LocalStateHelper",
"Local state file is not valid JSON. File: %1. JSON error: %2.")
.arg(m_filePath, parseError.errorString());
return false;
}
m_state = doc.object();
m_loaded = true;
@@ -63,7 +73,9 @@ bool LocalStateHelper::saveState() const
{
if (!m_loaded)
{
m_error = "State is not loaded";
m_error = QCoreApplication::translate(
"LocalStateHelper",
"Local state has not been loaded.");
return false;
}
@@ -71,7 +83,10 @@ bool LocalStateHelper::saveState() const
QString writeError;
if (!ConfigHelper::writeFileWithElevationIfNeeded(m_filePath, doc.toJson(QJsonDocument::Indented), &writeError))
{
m_error = QString("Cannot save state file: %1").arg(writeError);
m_error = QCoreApplication::translate(
"LocalStateHelper",
"Cannot save local state file: %1. Error: %2.")
.arg(m_filePath, writeError);
return false;
}
m_error.clear();