diff options
author | flow <flowlnlnln@gmail.com> | 2022-05-28 18:04:16 -0300 |
---|---|---|
committer | flow <flowlnlnln@gmail.com> | 2022-05-28 18:04:16 -0300 |
commit | f0ec165d42fb694f8027fb32f8c6d0867f286ced (patch) | |
tree | 070d5037d0b788f8bf3621f33710e150e1a0c311 /launcher | |
parent | abd240468e362231ce8cbc23573faea9a0e657f4 (diff) | |
download | PrismLauncher-f0ec165d42fb694f8027fb32f8c6d0867f286ced.tar.gz PrismLauncher-f0ec165d42fb694f8027fb32f8c6d0867f286ced.tar.bz2 PrismLauncher-f0ec165d42fb694f8027fb32f8c6d0867f286ced.zip |
feat: add warning of non-whitelisted URLs instead of a hard fail
Based on people's votes on Discord :^)
Diffstat (limited to 'launcher')
-rw-r--r-- | launcher/InstanceImportTask.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/launcher/InstanceImportTask.cpp b/launcher/InstanceImportTask.cpp index f166088f..0b97430e 100644 --- a/launcher/InstanceImportTask.cpp +++ b/launcher/InstanceImportTask.cpp @@ -585,6 +585,7 @@ void InstanceImportTask::processMultiMC() void InstanceImportTask::processModrinth() { std::vector<Modrinth::File> files; + std::vector<Modrinth::File> non_whitelisted_files; QString minecraftVersion, fabricVersion, quiltVersion, forgeVersion; try { QString indexPath = FS::PathCombine(m_stagingPath, "modrinth.index.json"); @@ -650,13 +651,29 @@ void InstanceImportTask::processModrinth() } else if (!Modrinth::validateDownloadUrl(file.download)) { qDebug() << QString("Download URL (%1) for %2 is from a non-whitelisted by Modrinth domain").arg(file.download.toString(), file.path); - throw JSONValidationError( - tr("Download URL for %1 is from a non-whitelisted by Modrinth domain: %2").arg(file.path, file.download.host())); + non_whitelisted_files.push_back(file); } files.push_back(file); } + if (!non_whitelisted_files.empty()) { + QString text; + for (const auto& file : non_whitelisted_files) { + text += tr("Filepath: %1<br>URL: <a href='%2'>%2</a><br>").arg(file.path, file.download.toString()); + } + + auto message_dialog = new ScrollMessageBox(m_parent, tr("Non-whitelisted mods found"), + tr("The following mods have URLs that are not whitelisted by Modrinth.\n" + "Proceed with caution!"), + text); + message_dialog->setModal(true); + if (message_dialog->exec() == QDialog::Rejected) { + emitFailed("Aborted"); + return; + } + } + auto dependencies = Json::requireObject(obj, "dependencies", "modrinth.index.json"); for (auto it = dependencies.begin(), end = dependencies.end(); it != end; ++it) { QString name = it.key(); |