feat: improve metadata gen. networking and performance
This makes the metadata generation code a lot messier and harder to use, but there's not really much else that can be done about it while preserving all it's capabilities :( At least we now have speed Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
@ -2,6 +2,7 @@
|
||||
|
||||
#include "ModIndex.h"
|
||||
#include "tasks/SequentialTask.h"
|
||||
#include "net/NetJob.h"
|
||||
|
||||
class Mod;
|
||||
class QDir;
|
||||
@ -11,7 +12,10 @@ class EnsureMetadataTask : public Task {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
EnsureMetadataTask(Mod&, QDir&, bool try_all, ModPlatform::Provider = ModPlatform::Provider::MODRINTH);
|
||||
EnsureMetadataTask(Mod&, QDir, ModPlatform::Provider = ModPlatform::Provider::MODRINTH);
|
||||
EnsureMetadataTask(std::list<Mod>&, QDir, ModPlatform::Provider = ModPlatform::Provider::MODRINTH);
|
||||
|
||||
~EnsureMetadataTask() = default;
|
||||
|
||||
public slots:
|
||||
bool abort() override;
|
||||
@ -20,22 +24,31 @@ class EnsureMetadataTask : public Task {
|
||||
|
||||
private:
|
||||
// FIXME: Move to their own namespace
|
||||
void modrinthEnsureMetadata(SequentialTask&, QByteArray&);
|
||||
void flameEnsureMetadata(SequentialTask&, QByteArray&);
|
||||
auto modrinthVersionsTask() -> NetJob::Ptr;
|
||||
auto modrinthProjectsTask() -> NetJob::Ptr;
|
||||
|
||||
auto flameVersionsTask() -> NetJob::Ptr;
|
||||
auto flameProjectsTask() -> NetJob::Ptr;
|
||||
|
||||
// Helpers
|
||||
void emitReady();
|
||||
void emitFail();
|
||||
void emitReady(Mod&);
|
||||
void emitFail(Mod&);
|
||||
|
||||
auto getHash(Mod&) -> QString;
|
||||
|
||||
private slots:
|
||||
void modrinthCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Mod&);
|
||||
void flameCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Mod&);
|
||||
|
||||
signals:
|
||||
void metadataReady();
|
||||
void metadataFailed();
|
||||
void metadataReady(Mod&);
|
||||
void metadataFailed(Mod&);
|
||||
|
||||
private:
|
||||
Mod& m_mod;
|
||||
QDir& m_index_dir;
|
||||
QHash<QString, Mod> m_mods;
|
||||
QDir m_index_dir;
|
||||
ModPlatform::Provider m_provider;
|
||||
bool m_try_all;
|
||||
|
||||
MultipleOptionsTask* m_task_handler = nullptr;
|
||||
QHash<QString, ModPlatform::IndexedVersion> m_temp_versions;
|
||||
NetJob* m_current_task;
|
||||
};
|
||||
|
Reference in New Issue
Block a user