aboutsummaryrefslogtreecommitdiff
path: root/launcher/modplatform/flame/FileResolvingTask.cpp
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-12-01 15:33:35 -0300
committerflow <flowlnlnln@gmail.com>2022-12-01 15:33:35 -0300
commit386fb28a35e4195838c0711dc894626a5d259c0e (patch)
treee9e84b7b4d4b89e4a5836a8e8e43e0115ee4cd92 /launcher/modplatform/flame/FileResolvingTask.cpp
parent79b79b752ce9c22764601da8c4ad7ca77ab8a016 (diff)
downloadPrismLauncher-386fb28a35e4195838c0711dc894626a5d259c0e.tar.gz
PrismLauncher-386fb28a35e4195838c0711dc894626a5d259c0e.tar.bz2
PrismLauncher-386fb28a35e4195838c0711dc894626a5d259c0e.zip
fix(FileResolvingTask): Fail instead of crash when there's API errors
Also remove non-used variable (rip). Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/modplatform/flame/FileResolvingTask.cpp')
-rw-r--r--launcher/modplatform/flame/FileResolvingTask.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/launcher/modplatform/flame/FileResolvingTask.cpp b/launcher/modplatform/flame/FileResolvingTask.cpp
index 25b56fbd..7f1beb1a 100644
--- a/launcher/modplatform/flame/FileResolvingTask.cpp
+++ b/launcher/modplatform/flame/FileResolvingTask.cpp
@@ -42,12 +42,25 @@ void Flame::FileResolvingTask::executeTask()
void Flame::FileResolvingTask::netJobFinished()
{
setProgress(1, 3);
- int index = 0;
// job to check modrinth for blocked projects
m_checkJob = new NetJob("Modrinth check", m_network);
blockedProjects = QMap<File *,QByteArray *>();
- auto doc = Json::requireDocument(*result);
- auto array = Json::requireArray(doc.object()["data"]);
+
+ QJsonDocument doc;
+ QJsonArray array;
+
+ try {
+ doc = Json::requireDocument(*result);
+ array = Json::requireArray(doc.object()["data"]);
+ } catch (Json::JsonException& e) {
+ qCritical() << "Non-JSON data returned from the CF API";
+ qCritical() << e.cause();
+
+ emitFailed(tr("Invalid data returned from the API."));
+
+ return;
+ }
+
for (QJsonValueRef file : array) {
auto fileid = Json::requireInteger(Json::requireObject(file)["id"]);
auto& out = m_toProcess.files[fileid];
@@ -68,7 +81,6 @@ void Flame::FileResolvingTask::netJobFinished()
blockedProjects.insert(&out, output);
}
}
- index++;
}
connect(m_checkJob.get(), &NetJob::finished, this, &Flame::FileResolvingTask::modrinthCheckFinished);