From 73788f5d2fd46c0e1b24216962f93c777e1253ae Mon Sep 17 00:00:00 2001
From: Jamie Mansfield <jmansfield@cadixdev.org>
Date: Wed, 14 Apr 2021 13:43:37 +0100
Subject: NOISSUE Emit failure on failure conditions

The 'Installing modpack' dialog will no longer stay open forever,
even though the installation has failed.
---
 api/logic/modplatform/atlauncher/ATLPackInstallTask.cpp | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

(limited to 'api/logic')

diff --git a/api/logic/modplatform/atlauncher/ATLPackInstallTask.cpp b/api/logic/modplatform/atlauncher/ATLPackInstallTask.cpp
index 32420415..192dd0b1 100644
--- a/api/logic/modplatform/atlauncher/ATLPackInstallTask.cpp
+++ b/api/logic/modplatform/atlauncher/ATLPackInstallTask.cpp
@@ -188,6 +188,7 @@ QString PackInstallTask::getVersionForLoader(QString uid)
             }
 
             emitFailed(tr("Failed to find version for %1 loader").arg(m_version.loader.type));
+            return Q_NULLPTR;
         }
         else if(m_version.loader.choose) {
             // Fabric Loader doesn't depend on a given Minecraft version.
@@ -199,6 +200,11 @@ QString PackInstallTask::getVersionForLoader(QString uid)
         }
     }
 
+    if (m_version.loader.version == Q_NULLPTR || m_version.loader.version.isEmpty()) {
+        emitFailed(tr("No loader version set for modpack!"));
+        return Q_NULLPTR;
+    }
+
     return m_version.loader.version;
 }
 
@@ -549,7 +555,7 @@ void PackInstallTask::onModsDownloaded() {
     qDebug() << "PackInstallTask::onModsDownloaded: " << QThread::currentThreadId();
     jobPtr.reset();
 
-    if(modsToExtract.size() || modsToDecomp.size() || modsToCopy.size()) {
+    if(!modsToExtract.empty() || !modsToDecomp.empty() || !modsToCopy.empty()) {
         m_modExtractFuture = QtConcurrent::run(QThreadPool::globalInstance(), this, &PackInstallTask::extractMods, modsToExtract, modsToDecomp, modsToCopy);
         connect(&m_modExtractFutureWatcher, &QFutureWatcher<QStringList>::finished, this, &PackInstallTask::onModsExtracted);
         connect(&m_modExtractFutureWatcher, &QFutureWatcher<QStringList>::canceled, this, [&]()
@@ -656,6 +662,7 @@ void PackInstallTask::install()
 
     // Use a component to add libraries BEFORE Minecraft
     if(!createLibrariesComponent(instance.instanceRoot(), components)) {
+        emitFailed(tr("Failed to create libraries component"));
         return;
     }
 
@@ -693,6 +700,7 @@ void PackInstallTask::install()
     // Use a component to fill in the rest of the data
     // todo: use more detection
     if(!createPackComponent(instance.instanceRoot(), components)) {
+        emitFailed(tr("Failed to create pack component"));
         return;
     }
 
-- 
cgit