Resolve issue with multiple loaders during update

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2024-06-24 03:06:10 +03:00
parent 98d68bafeb
commit e57c2180da
No known key found for this signature in database
GPG key ID: 55EF5DA53DB36318
10 changed files with 275 additions and 170 deletions

View file

@ -1,8 +1,6 @@
#pragma once
#include "Application.h"
#include "modplatform/CheckUpdateTask.h"
#include "net/NetJob.h"
class ModrinthCheckUpdate : public CheckUpdateTask {
Q_OBJECT
@ -11,16 +9,21 @@ class ModrinthCheckUpdate : public CheckUpdateTask {
ModrinthCheckUpdate(QList<Mod*>& mods,
std::list<Version>& mcVersions,
std::optional<ModPlatform::ModLoaderTypes> loaders,
std::shared_ptr<ModFolderModel> mods_folder)
: CheckUpdateTask(mods, mcVersions, loaders, mods_folder)
{}
QList<ModPlatform::ModLoaderType> loadersList,
std::shared_ptr<ModFolderModel> mods_folder);
public slots:
bool abort() override;
protected slots:
void executeTask() override;
void getUpdateModsForLoader(ModPlatform::ModLoaderTypes loader, bool forceModLoaderCheck = false);
void checkVersionsResponse(std::shared_ptr<QByteArray> response, ModPlatform::ModLoaderTypes loader, bool forceModLoaderCheck = false);
void checkNextLoader();
private:
NetJob::Ptr m_net_job = nullptr;
Task::Ptr m_job = nullptr;
QHash<QString, Mod*> m_mappings;
QString m_hash_type;
int m_next_loader_idx = 0;
};