From 496440cbc81dde34f8ee3851425dffef9b9fec9e Mon Sep 17 00:00:00 2001 From: arthomnix Date: Sun, 5 Feb 2023 17:36:44 +0000 Subject: [PATCH] NOISSUE Handle Modrinth files with multiple downloads --- .../modrinth/ModrinthInstanceExportTask.cpp | 15 ++++++++++++++- .../modrinth/ModrinthInstanceExportTask.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/launcher/modplatform/modrinth/ModrinthInstanceExportTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceExportTask.cpp index 4b2a6268..4112c5f7 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceExportTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceExportTask.cpp @@ -88,6 +88,7 @@ void InstanceExportTask::executeTask() m_responses.append(HashLookupData{ QFileInfo(file), + hash, QByteArray() }); @@ -117,7 +118,19 @@ void InstanceExportTask::lookupSucceeded() try { auto document = Json::requireDocument(data.response); auto object = Json::requireObject(document); - auto file = Json::requireIsArrayOf(object, "files").first(); + auto files = Json::requireIsArrayOf(object, "files"); + + QJsonObject file; + + for (const auto &fileJson : files) { + auto hashes = Json::requireObject(fileJson, "hashes"); + QString sha512 = Json::requireString(hashes, "sha512"); + + if (sha512 == data.sha512) { + file = fileJson; + } + } + auto url = Json::requireString(file, "url"); auto hashes = Json::requireObject(file, "hashes"); diff --git a/launcher/modplatform/modrinth/ModrinthInstanceExportTask.h b/launcher/modplatform/modrinth/ModrinthInstanceExportTask.h index ff59f45b..c1592bc2 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceExportTask.h +++ b/launcher/modplatform/modrinth/ModrinthInstanceExportTask.h @@ -38,6 +38,7 @@ struct ExportSettings struct HashLookupData { QFileInfo fileInfo; + QString sha512; QByteArray response; };