mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-06-13 05:37:42 +02:00
feat: add mod update check tasks
Those tasks take a list of mods and check on the mod providers for updates. They assume that the mods have metadata already. Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
51
launcher/modplatform/CheckUpdateTask.h
Normal file
51
launcher/modplatform/CheckUpdateTask.h
Normal file
@ -0,0 +1,51 @@
|
||||
#pragma once
|
||||
|
||||
#include "minecraft/mod/Mod.h"
|
||||
#include "modplatform/ModAPI.h"
|
||||
#include "modplatform/ModIndex.h"
|
||||
#include "tasks/Task.h"
|
||||
|
||||
class ModDownloadTask;
|
||||
class ModFolderModel;
|
||||
|
||||
class CheckUpdateTask : public Task {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CheckUpdateTask(std::list<Mod>& mods, std::list<Version>& mcVersions, ModAPI::ModLoaderTypes loaders, std::shared_ptr<ModFolderModel> mods_folder)
|
||||
: m_mods(mods), m_game_versions(mcVersions), m_loaders(loaders), m_mods_folder(mods_folder) {};
|
||||
|
||||
struct UpdatableMod {
|
||||
QString name;
|
||||
QString old_hash;
|
||||
QString old_version;
|
||||
QString new_version;
|
||||
QString changelog;
|
||||
ModPlatform::Provider provider;
|
||||
ModDownloadTask* download;
|
||||
|
||||
public:
|
||||
UpdatableMod(QString name, QString old_h, QString old_v, QString new_v, QString changelog, ModPlatform::Provider p, ModDownloadTask* t)
|
||||
: name(name), old_hash(old_h), old_version(old_v), new_version(new_v), changelog(changelog), provider(p), download(t)
|
||||
{}
|
||||
};
|
||||
|
||||
auto getUpdatable() -> std::vector<UpdatableMod>&& { return std::move(m_updatable); }
|
||||
|
||||
public slots:
|
||||
bool abort() override = 0;
|
||||
|
||||
protected slots:
|
||||
void executeTask() override = 0;
|
||||
|
||||
signals:
|
||||
void checkFailed(Mod failed, QString reason, QUrl recover_url = {});
|
||||
|
||||
protected:
|
||||
std::list<Mod>& m_mods;
|
||||
std::list<Version>& m_game_versions;
|
||||
ModAPI::ModLoaderTypes m_loaders;
|
||||
std::shared_ptr<ModFolderModel> m_mods_folder;
|
||||
|
||||
std::vector<UpdatableMod> m_updatable;
|
||||
};
|
Reference in New Issue
Block a user