Merge pull request #329 from flowln/only_safe_workarounds

This commit is contained in:
timoreo 2022-11-01 09:55:43 +01:00 committed by Sefa Eyeoglu
parent a39390b8b4
commit 7f6515dbe4
No known key found for this signature in database
GPG Key ID: C10411294912A422

View File

@ -3,6 +3,8 @@
#include "Json.h" #include "Json.h"
#include "net/Upload.h" #include "net/Upload.h"
#include "modplatform/modrinth/ModrinthPackIndex.h"
Flame::FileResolvingTask::FileResolvingTask(const shared_qobject_ptr<QNetworkAccessManager>& network, Flame::Manifest& toProcess) Flame::FileResolvingTask::FileResolvingTask(const shared_qobject_ptr<QNetworkAccessManager>& network, Flame::Manifest& toProcess)
: m_network(network), m_toProcess(toProcess) : m_network(network), m_toProcess(toProcess)
{} {}
@ -84,18 +86,21 @@ void Flame::FileResolvingTask::modrinthCheckFinished() {
delete bytes; delete bytes;
continue; continue;
} }
QJsonDocument doc = QJsonDocument::fromJson(*bytes); QJsonDocument doc = QJsonDocument::fromJson(*bytes);
auto obj = doc.object(); auto obj = doc.object();
auto array = Json::requireArray(obj,"files"); auto file = Modrinth::loadIndexedPackVersion(obj);
for (auto file: array) {
auto fileObj = Json::requireObject(file); // If there's more than one mod loader for this version, we can't know for sure
auto primary = Json::requireBoolean(fileObj,"primary"); // which file is relative to each loader, so it's best to not use any one and
if (primary) { // let the user download it manually.
out->url = Json::requireUrl(fileObj,"url"); if (file.loaders.size() <= 1) {
out->url = file.downloadUrl;
qDebug() << "Found alternative on modrinth " << out->fileName; qDebug() << "Found alternative on modrinth " << out->fileName;
break; } else {
} out->resolved = false;
} }
delete bytes; delete bytes;
} }
//copy to an output list and filter out projects found on modrinth //copy to an output list and filter out projects found on modrinth