aboutsummaryrefslogtreecommitdiff
path: root/launcher/modplatform/EnsureMetadataTask.h
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-07-24 15:13:42 -0300
committerflow <flowlnlnln@gmail.com>2022-07-24 17:46:54 -0300
commite6f2a3893a6c9b3c0a2b94ffde41a7dbee1accb0 (patch)
tree7fbce87947dec5616b18bee7dd7b8bf4e19d15d6 /launcher/modplatform/EnsureMetadataTask.h
parent24c034ff6a15ed8fb8321f410e2003d83deead46 (diff)
downloadPrismLauncher-e6f2a3893a6c9b3c0a2b94ffde41a7dbee1accb0.tar.gz
PrismLauncher-e6f2a3893a6c9b3c0a2b94ffde41a7dbee1accb0.tar.bz2
PrismLauncher-e6f2a3893a6c9b3c0a2b94ffde41a7dbee1accb0.zip
refactor+feat: improve code separation in ensure metadata
... and avoid calculating the same hash multiple times Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/modplatform/EnsureMetadataTask.h')
-rw-r--r--launcher/modplatform/EnsureMetadataTask.h21
1 files changed, 16 insertions, 5 deletions
diff --git a/launcher/modplatform/EnsureMetadataTask.h b/launcher/modplatform/EnsureMetadataTask.h
index 79db6976..13319266 100644
--- a/launcher/modplatform/EnsureMetadataTask.h
+++ b/launcher/modplatform/EnsureMetadataTask.h
@@ -1,12 +1,14 @@
#pragma once
#include "ModIndex.h"
-#include "tasks/SequentialTask.h"
#include "net/NetJob.h"
+#include "modplatform/helpers/HashUtils.h"
+
+#include "tasks/ConcurrentTask.h"
+
class Mod;
class QDir;
-class MultipleOptionsTask;
class EnsureMetadataTask : public Task {
Q_OBJECT
@@ -17,6 +19,8 @@ class EnsureMetadataTask : public Task {
~EnsureMetadataTask() = default;
+ Task::Ptr getHashingTask() { return m_hashing_task; }
+
public slots:
bool abort() override;
protected slots:
@@ -31,10 +35,16 @@ class EnsureMetadataTask : public Task {
auto flameProjectsTask() -> NetJob::Ptr;
// Helpers
- void emitReady(Mod*);
- void emitFail(Mod*);
+ enum class RemoveFromList {
+ Yes,
+ No
+ };
+ void emitReady(Mod*, RemoveFromList = RemoveFromList::Yes);
+ void emitFail(Mod*, RemoveFromList = RemoveFromList::Yes);
- auto getHash(Mod*) -> QString;
+ // Hashes and stuff
+ auto createNewHash(Mod*) -> Hashing::Hasher::Ptr;
+ auto getExistingHash(Mod*) -> QString;
private slots:
void modrinthCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Mod*);
@@ -50,5 +60,6 @@ class EnsureMetadataTask : public Task {
ModPlatform::Provider m_provider;
QHash<QString, ModPlatform::IndexedVersion> m_temp_versions;
+ ConcurrentTask* m_hashing_task;
NetJob* m_current_task;
};