diff options
author | flow <flowlnlnln@gmail.com> | 2022-07-24 15:13:42 -0300 |
---|---|---|
committer | flow <flowlnlnln@gmail.com> | 2022-07-24 17:46:54 -0300 |
commit | e6f2a3893a6c9b3c0a2b94ffde41a7dbee1accb0 (patch) | |
tree | 7fbce87947dec5616b18bee7dd7b8bf4e19d15d6 /launcher/modplatform/EnsureMetadataTask.h | |
parent | 24c034ff6a15ed8fb8321f410e2003d83deead46 (diff) | |
download | PrismLauncher-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.h | 21 |
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; }; |