diff --git a/src/citron/mod_manager/mod_service.h b/src/citron/mod_manager/mod_service.h new file mode 100644 index 000000000..23d7619bc --- /dev/null +++ b/src/citron/mod_manager/mod_service.h @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: Copyright 2026 citron Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +class QNetworkAccessManager; + +namespace ModManager { + +struct ModPatch { + QString name; + QString type; // "exefs" or "romfs" + QString rel_path; + QStringList files; +}; + +struct ModUpdateInfo { + QString title_id; + // Maps Version String (e.g. "2.0.0") to its list of patches + std::map> version_patches; +}; + +class ModService : public QObject { + Q_OBJECT +public: + explicit ModService(QObject* parent = nullptr); + ~ModService(); + + // Removed the version parameter so it fetches everything + void FetchAvailableMods(const QString& title_id); + +signals: + void ModsAvailable(const ModUpdateInfo& info); + void Error(const QString& message); + +private: + std::unique_ptr network_manager; + const QString MANIFEST_URL = QStringLiteral("https://raw.githubusercontent.com/CollectingW/Citron-Mods/main/manifest.json"); +}; + +} // namespace ModManager