chore: update link and sync with other providers changes

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2025-03-30 17:32:24 +03:00
parent 22dfeec865
commit 9359c4833d
No known key found for this signature in database
GPG Key ID: 55EF5DA53DB36318
12 changed files with 82 additions and 73 deletions

View File

@ -173,6 +173,7 @@ class Config {
QString TRANSLATION_FILES_URL; QString TRANSLATION_FILES_URL;
QString MODPACKSCH_API_BASE_URL = "https://api.modpacks.ch/"; QString MODPACKSCH_API_BASE_URL = "https://api.modpacks.ch/";
QString FTB_API_BASE_URL = "https://api.feed-the-beast.com/v1/modpacks/public";
QString LEGACY_FTB_CDN_BASE_URL = "https://dist.creeper.host/FTB2/"; QString LEGACY_FTB_CDN_BASE_URL = "https://dist.creeper.host/FTB2/";

View File

@ -999,7 +999,6 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
m_metacache->addBase("FTBPacks", QDir("cache/FTBPacks").absolutePath()); m_metacache->addBase("FTBPacks", QDir("cache/FTBPacks").absolutePath());
m_metacache->addBase("TechnicPacks", QDir("cache/TechnicPacks").absolutePath()); m_metacache->addBase("TechnicPacks", QDir("cache/TechnicPacks").absolutePath());
m_metacache->addBase("FlamePacks", QDir("cache/FlamePacks").absolutePath()); m_metacache->addBase("FlamePacks", QDir("cache/FlamePacks").absolutePath());
m_metacache->addBase("ModpacksCHPacks", QDir("cache/ModpacksCHPacks").absolutePath());
m_metacache->addBase("FlameMods", QDir("cache/FlameMods").absolutePath()); m_metacache->addBase("FlameMods", QDir("cache/FlameMods").absolutePath());
m_metacache->addBase("ModrinthPacks", QDir("cache/ModrinthPacks").absolutePath()); m_metacache->addBase("ModrinthPacks", QDir("cache/ModrinthPacks").absolutePath());
m_metacache->addBase("ModrinthModpacks", QDir("cache/ModrinthModpacks").absolutePath()); m_metacache->addBase("ModrinthModpacks", QDir("cache/ModrinthModpacks").absolutePath());

View File

@ -533,6 +533,11 @@ set(FTB_SOURCES
modplatform/import_ftb/PackInstallTask.cpp modplatform/import_ftb/PackInstallTask.cpp
modplatform/import_ftb/PackHelpers.h modplatform/import_ftb/PackHelpers.h
modplatform/import_ftb/PackHelpers.cpp modplatform/import_ftb/PackHelpers.cpp
modplatform/ftb/FTBPackInstallTask.h
modplatform/ftb/FTBPackInstallTask.cpp
modplatform/ftb/FTBPackManifest.h
modplatform/ftb/FTBPackManifest.cpp
) )
set(FLAME_SOURCES set(FLAME_SOURCES
@ -566,13 +571,6 @@ set(MODRINTH_SOURCES
modplatform/modrinth/ModrinthPackExportTask.h modplatform/modrinth/ModrinthPackExportTask.h
) )
set(MODPACKSCH_SOURCES
modplatform/modpacksch/FTBPackInstallTask.h
modplatform/modpacksch/FTBPackInstallTask.cpp
modplatform/modpacksch/FTBPackManifest.h
modplatform/modpacksch/FTBPackManifest.cpp
)
set(PACKWIZ_SOURCES set(PACKWIZ_SOURCES
modplatform/packwiz/Packwiz.h modplatform/packwiz/Packwiz.h
modplatform/packwiz/Packwiz.cpp modplatform/packwiz/Packwiz.cpp
@ -785,7 +783,6 @@ set(LOGIC_SOURCES
${FTB_SOURCES} ${FTB_SOURCES}
${FLAME_SOURCES} ${FLAME_SOURCES}
${MODRINTH_SOURCES} ${MODRINTH_SOURCES}
${MODPACKSCH_SOURCES}
${PACKWIZ_SOURCES} ${PACKWIZ_SOURCES}
${TECHNIC_SOURCES} ${TECHNIC_SOURCES}
${ATLAUNCHER_SOURCES} ${ATLAUNCHER_SOURCES}

View File

@ -42,6 +42,7 @@
#include "Json.h" #include "Json.h"
#include "minecraft/MinecraftInstance.h" #include "minecraft/MinecraftInstance.h"
#include "minecraft/PackProfile.h" #include "minecraft/PackProfile.h"
#include "modplatform/flame/FileResolvingTask.h"
#include "modplatform/flame/PackManifest.h" #include "modplatform/flame/PackManifest.h"
#include "net/ChecksumValidator.h" #include "net/ChecksumValidator.h"
#include "settings/INISettingsObject.h" #include "settings/INISettingsObject.h"
@ -50,7 +51,7 @@
#include "BuildConfig.h" #include "BuildConfig.h"
#include "ui/dialogs/BlockedModsDialog.h" #include "ui/dialogs/BlockedModsDialog.h"
namespace ModpacksCH { namespace FTB {
PackInstallTask::PackInstallTask(Modpack pack, QString version, QWidget* parent) PackInstallTask::PackInstallTask(Modpack pack, QString version, QWidget* parent)
: m_pack(std::move(pack)), m_versionName(std::move(version)), m_parent(parent) : m_pack(std::move(pack)), m_versionName(std::move(version)), m_parent(parent)
@ -78,7 +79,7 @@ void PackInstallTask::executeTask()
// Find pack version // Find pack version
auto version_it = std::find_if(m_pack.versions.constBegin(), m_pack.versions.constEnd(), auto version_it = std::find_if(m_pack.versions.constBegin(), m_pack.versions.constEnd(),
[this](ModpacksCH::VersionInfo const& a) { return a.name == m_versionName; }); [this](FTB::VersionInfo const& a) { return a.name == m_versionName; });
if (version_it == m_pack.versions.constEnd()) { if (version_it == m_pack.versions.constEnd()) {
emitFailed(tr("Failed to find pack version %1").arg(m_versionName)); emitFailed(tr("Failed to find pack version %1").arg(m_versionName));
@ -87,9 +88,9 @@ void PackInstallTask::executeTask()
auto version = *version_it; auto version = *version_it;
auto netJob = makeShared<NetJob>("ModpacksCH::VersionFetch", APPLICATION->network()); auto netJob = makeShared<NetJob>("FTB::VersionFetch", APPLICATION->network());
auto searchUrl = QString(BuildConfig.MODPACKSCH_API_BASE_URL + "public/modpack/%1/%2").arg(m_pack.id).arg(version.id); auto searchUrl = QString(BuildConfig.FTB_API_BASE_URL + "/modpack/%1/%2").arg(m_pack.id).arg(version.id);
m_response.reset(new QByteArray()); m_response.reset(new QByteArray());
netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), m_response)); netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), m_response));
@ -111,16 +112,15 @@ void PackInstallTask::onManifestDownloadSucceeded()
QJsonParseError parse_error{}; QJsonParseError parse_error{};
QJsonDocument doc = QJsonDocument::fromJson(*m_response, &parse_error); QJsonDocument doc = QJsonDocument::fromJson(*m_response, &parse_error);
if (parse_error.error != QJsonParseError::NoError) { if (parse_error.error != QJsonParseError::NoError) {
qWarning() << "Error while parsing JSON response from ModpacksCH at " << parse_error.offset qWarning() << "Error while parsing JSON response from FTB at " << parse_error.offset << " reason: " << parse_error.errorString();
<< " reason: " << parse_error.errorString();
qWarning() << *m_response; qWarning() << *m_response;
return; return;
} }
ModpacksCH::Version version; FTB::Version version;
try { try {
auto obj = Json::requireObject(doc); auto obj = Json::requireObject(doc);
ModpacksCH::loadVersion(version, obj); FTB::loadVersion(version, obj);
} catch (const JSONValidationError& e) { } catch (const JSONValidationError& e) {
emitFailed(tr("Could not understand pack manifest:\n") + e.cause()); emitFailed(tr("Could not understand pack manifest:\n") + e.cause());
return; return;
@ -151,8 +151,6 @@ void PackInstallTask::resolveMods()
flameFile.projectId = file.curseforge.project_id; flameFile.projectId = file.curseforge.project_id;
flameFile.fileId = file.curseforge.file_id; flameFile.fileId = file.curseforge.file_id;
// flame_file.hash = file.sha1;
manifest.files.insert(flameFile.fileId, flameFile); manifest.files.insert(flameFile.fileId, flameFile);
m_fileIds.append(flameFile.fileId); m_fileIds.append(flameFile.fileId);
} else { } else {
@ -160,7 +158,7 @@ void PackInstallTask::resolveMods()
} }
} }
m_modIdResolverTask.reset(new Flame::FileResolvingTask(APPLICATION->network(), manifest)); m_modIdResolverTask.reset(new Flame::FileResolvingTask(manifest));
connect(m_modIdResolverTask.get(), &Flame::FileResolvingTask::succeeded, this, &PackInstallTask::onResolveModsSucceeded); connect(m_modIdResolverTask.get(), &Flame::FileResolvingTask::succeeded, this, &PackInstallTask::onResolveModsSucceeded);
connect(m_modIdResolverTask.get(), &Flame::FileResolvingTask::failed, this, &PackInstallTask::onResolveModsFailed); connect(m_modIdResolverTask.get(), &Flame::FileResolvingTask::failed, this, &PackInstallTask::onResolveModsFailed);
@ -279,7 +277,7 @@ void PackInstallTask::createInstance()
instance.setName(name()); instance.setName(name());
instance.setIconKey(m_instIcon); instance.setIconKey(m_instIcon);
instance.setManagedPack("modpacksch", QString::number(m_pack.id), m_pack.name, QString::number(m_version.id), m_version.name); instance.setManagedPack("ftb", QString::number(m_pack.id), m_pack.name, QString::number(m_version.id), m_version.name);
instance.saveNow(); instance.saveNow();
@ -385,4 +383,4 @@ void PackInstallTask::copyBlockedMods()
setAbortable(true); setAbortable(true);
} }
} // namespace ModpacksCH } // namespace FTB

View File

@ -47,7 +47,7 @@
#include <QWidget> #include <QWidget>
namespace ModpacksCH { namespace FTB {
class PackInstallTask final : public InstanceTask { class PackInstallTask final : public InstanceTask {
Q_OBJECT Q_OBJECT
@ -97,4 +97,4 @@ class PackInstallTask final : public InstanceTask {
QWidget* m_parent; QWidget* m_parent;
}; };
} // namespace ModpacksCH } // namespace FTB

View File

@ -38,20 +38,20 @@
#include "Json.h" #include "Json.h"
static void loadSpecs(ModpacksCH::Specs& s, QJsonObject& obj) static void loadSpecs(FTB::Specs& s, QJsonObject& obj)
{ {
s.id = Json::requireInteger(obj, "id"); s.id = Json::requireInteger(obj, "id");
s.minimum = Json::requireInteger(obj, "minimum"); s.minimum = Json::requireInteger(obj, "minimum");
s.recommended = Json::requireInteger(obj, "recommended"); s.recommended = Json::requireInteger(obj, "recommended");
} }
static void loadTag(ModpacksCH::Tag& t, QJsonObject& obj) static void loadTag(FTB::Tag& t, QJsonObject& obj)
{ {
t.id = Json::requireInteger(obj, "id"); t.id = Json::requireInteger(obj, "id");
t.name = Json::requireString(obj, "name"); t.name = Json::requireString(obj, "name");
} }
static void loadArt(ModpacksCH::Art& a, QJsonObject& obj) static void loadArt(FTB::Art& a, QJsonObject& obj)
{ {
a.id = Json::requireInteger(obj, "id"); a.id = Json::requireInteger(obj, "id");
a.url = Json::requireString(obj, "url"); a.url = Json::requireString(obj, "url");
@ -60,11 +60,11 @@ static void loadArt(ModpacksCH::Art& a, QJsonObject& obj)
a.height = Json::requireInteger(obj, "height"); a.height = Json::requireInteger(obj, "height");
a.compressed = Json::requireBoolean(obj, "compressed"); a.compressed = Json::requireBoolean(obj, "compressed");
a.sha1 = Json::requireString(obj, "sha1"); a.sha1 = Json::requireString(obj, "sha1");
a.size = Json::requireInteger(obj, "size"); a.size = Json::ensureInteger(obj, "size");
a.updated = Json::requireInteger(obj, "updated"); a.updated = Json::requireInteger(obj, "updated");
} }
static void loadAuthor(ModpacksCH::Author& a, QJsonObject& obj) static void loadAuthor(FTB::Author& a, QJsonObject& obj)
{ {
a.id = Json::requireInteger(obj, "id"); a.id = Json::requireInteger(obj, "id");
a.name = Json::requireString(obj, "name"); a.name = Json::requireString(obj, "name");
@ -73,7 +73,7 @@ static void loadAuthor(ModpacksCH::Author& a, QJsonObject& obj)
a.updated = Json::requireInteger(obj, "updated"); a.updated = Json::requireInteger(obj, "updated");
} }
static void loadVersionInfo(ModpacksCH::VersionInfo& v, QJsonObject& obj) static void loadVersionInfo(FTB::VersionInfo& v, QJsonObject& obj)
{ {
v.id = Json::requireInteger(obj, "id"); v.id = Json::requireInteger(obj, "id");
v.name = Json::requireString(obj, "name"); v.name = Json::requireString(obj, "name");
@ -83,7 +83,7 @@ static void loadVersionInfo(ModpacksCH::VersionInfo& v, QJsonObject& obj)
loadSpecs(v.specs, specs); loadSpecs(v.specs, specs);
} }
void ModpacksCH::loadModpack(ModpacksCH::Modpack& m, QJsonObject& obj) void FTB::loadModpack(FTB::Modpack& m, QJsonObject& obj)
{ {
m.id = Json::requireInteger(obj, "id"); m.id = Json::requireInteger(obj, "id");
m.name = Json::requireString(obj, "name"); m.name = Json::requireString(obj, "name");
@ -95,39 +95,39 @@ void ModpacksCH::loadModpack(ModpacksCH::Modpack& m, QJsonObject& obj)
m.installs = Json::requireInteger(obj, "installs"); m.installs = Json::requireInteger(obj, "installs");
m.plays = Json::requireInteger(obj, "plays"); m.plays = Json::requireInteger(obj, "plays");
m.updated = Json::requireInteger(obj, "updated"); m.updated = Json::requireInteger(obj, "updated");
m.refreshed = Json::requireInteger(obj, "refreshed"); m.refreshed = Json::ensureInteger(obj, "refreshed");
auto artArr = Json::requireArray(obj, "art"); auto artArr = Json::requireArray(obj, "art");
for (QJsonValueRef artRaw : artArr) { for (QJsonValueRef artRaw : artArr) {
auto artObj = Json::requireObject(artRaw); auto artObj = Json::requireObject(artRaw);
ModpacksCH::Art art; FTB::Art art;
loadArt(art, artObj); loadArt(art, artObj);
m.art.append(art); m.art.append(art);
} }
auto authorArr = Json::requireArray(obj, "authors"); auto authorArr = Json::requireArray(obj, "authors");
for (QJsonValueRef authorRaw : authorArr) { for (QJsonValueRef authorRaw : authorArr) {
auto authorObj = Json::requireObject(authorRaw); auto authorObj = Json::requireObject(authorRaw);
ModpacksCH::Author author; FTB::Author author;
loadAuthor(author, authorObj); loadAuthor(author, authorObj);
m.authors.append(author); m.authors.append(author);
} }
auto versionArr = Json::requireArray(obj, "versions"); auto versionArr = Json::requireArray(obj, "versions");
for (QJsonValueRef versionRaw : versionArr) { for (QJsonValueRef versionRaw : versionArr) {
auto versionObj = Json::requireObject(versionRaw); auto versionObj = Json::requireObject(versionRaw);
ModpacksCH::VersionInfo version; FTB::VersionInfo version;
loadVersionInfo(version, versionObj); loadVersionInfo(version, versionObj);
m.versions.append(version); m.versions.append(version);
} }
auto tagArr = Json::requireArray(obj, "tags"); auto tagArr = Json::requireArray(obj, "tags");
for (QJsonValueRef tagRaw : tagArr) { for (QJsonValueRef tagRaw : tagArr) {
auto tagObj = Json::requireObject(tagRaw); auto tagObj = Json::requireObject(tagRaw);
ModpacksCH::Tag tag; FTB::Tag tag;
loadTag(tag, tagObj); loadTag(tag, tagObj);
m.tags.append(tag); m.tags.append(tag);
} }
m.updated = Json::requireInteger(obj, "updated"); m.updated = Json::requireInteger(obj, "updated");
} }
static void loadVersionTarget(ModpacksCH::VersionTarget& a, QJsonObject& obj) static void loadVersionTarget(FTB::VersionTarget& a, QJsonObject& obj)
{ {
a.id = Json::requireInteger(obj, "id"); a.id = Json::requireInteger(obj, "id");
a.name = Json::requireString(obj, "name"); a.name = Json::requireString(obj, "name");
@ -136,7 +136,7 @@ static void loadVersionTarget(ModpacksCH::VersionTarget& a, QJsonObject& obj)
a.updated = Json::requireInteger(obj, "updated"); a.updated = Json::requireInteger(obj, "updated");
} }
static void loadVersionFile(ModpacksCH::VersionFile& a, QJsonObject& obj) static void loadVersionFile(FTB::VersionFile& a, QJsonObject& obj)
{ {
a.id = Json::requireInteger(obj, "id"); a.id = Json::requireInteger(obj, "id");
a.type = Json::requireString(obj, "type"); a.type = Json::requireString(obj, "type");
@ -145,7 +145,7 @@ static void loadVersionFile(ModpacksCH::VersionFile& a, QJsonObject& obj)
a.version = Json::requireString(obj, "version"); a.version = Json::requireString(obj, "version");
a.url = Json::ensureString(obj, "url"); // optional a.url = Json::ensureString(obj, "url"); // optional
a.sha1 = Json::requireString(obj, "sha1"); a.sha1 = Json::requireString(obj, "sha1");
a.size = Json::requireInteger(obj, "size"); a.size = Json::ensureInteger(obj, "size");
a.clientOnly = Json::requireBoolean(obj, "clientonly"); a.clientOnly = Json::requireBoolean(obj, "clientonly");
a.serverOnly = Json::requireBoolean(obj, "serveronly"); a.serverOnly = Json::requireBoolean(obj, "serveronly");
a.optional = Json::requireBoolean(obj, "optional"); a.optional = Json::requireBoolean(obj, "optional");
@ -155,7 +155,7 @@ static void loadVersionFile(ModpacksCH::VersionFile& a, QJsonObject& obj)
a.curseforge.file_id = Json::ensureInteger(curseforgeObj, "file"); a.curseforge.file_id = Json::ensureInteger(curseforgeObj, "file");
} }
void ModpacksCH::loadVersion(ModpacksCH::Version& m, QJsonObject& obj) void FTB::loadVersion(FTB::Version& m, QJsonObject& obj)
{ {
m.id = Json::requireInteger(obj, "id"); m.id = Json::requireInteger(obj, "id");
m.parent = Json::requireInteger(obj, "parent"); m.parent = Json::requireInteger(obj, "parent");
@ -164,20 +164,20 @@ void ModpacksCH::loadVersion(ModpacksCH::Version& m, QJsonObject& obj)
m.installs = Json::requireInteger(obj, "installs"); m.installs = Json::requireInteger(obj, "installs");
m.plays = Json::requireInteger(obj, "plays"); m.plays = Json::requireInteger(obj, "plays");
m.updated = Json::requireInteger(obj, "updated"); m.updated = Json::requireInteger(obj, "updated");
m.refreshed = Json::requireInteger(obj, "refreshed"); m.refreshed = Json::ensureInteger(obj, "refreshed");
auto specs = Json::requireObject(obj, "specs"); auto specs = Json::requireObject(obj, "specs");
loadSpecs(m.specs, specs); loadSpecs(m.specs, specs);
auto targetArr = Json::requireArray(obj, "targets"); auto targetArr = Json::requireArray(obj, "targets");
for (QJsonValueRef targetRaw : targetArr) { for (QJsonValueRef targetRaw : targetArr) {
auto versionObj = Json::requireObject(targetRaw); auto versionObj = Json::requireObject(targetRaw);
ModpacksCH::VersionTarget target; FTB::VersionTarget target;
loadVersionTarget(target, versionObj); loadVersionTarget(target, versionObj);
m.targets.append(target); m.targets.append(target);
} }
auto fileArr = Json::requireArray(obj, "files"); auto fileArr = Json::requireArray(obj, "files");
for (QJsonValueRef fileRaw : fileArr) { for (QJsonValueRef fileRaw : fileArr) {
auto fileObj = Json::requireObject(fileRaw); auto fileObj = Json::requireObject(fileRaw);
ModpacksCH::VersionFile file; FTB::VersionFile file;
loadVersionFile(file, fileObj); loadVersionFile(file, fileObj);
m.files.append(file); m.files.append(file);
} }

View File

@ -42,7 +42,7 @@
#include <QUrl> #include <QUrl>
#include <QVector> #include <QVector>
namespace ModpacksCH { namespace FTB {
struct Specs { struct Specs {
int id; int id;
@ -152,6 +152,6 @@ struct VersionChangelog {
void loadModpack(Modpack& m, QJsonObject& obj); void loadModpack(Modpack& m, QJsonObject& obj);
void loadVersion(Version& m, QJsonObject& obj); void loadVersion(Version& m, QJsonObject& obj);
} // namespace ModpacksCH } // namespace FTB
Q_DECLARE_METATYPE(ModpacksCH::Modpack) Q_DECLARE_METATYPE(FTB::Modpack)

View File

@ -18,7 +18,7 @@
#include <QDebug> #include <QDebug>
#include "modplatform/modpacksch/FTBPackManifest.h" #include "modplatform/ftb/FTBPackManifest.h"
#include "StringUtils.h" #include "StringUtils.h"
@ -66,14 +66,14 @@ bool FilterModel::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParen
} }
auto index = sourceModel()->index(sourceRow, 0, sourceParent); auto index = sourceModel()->index(sourceRow, 0, sourceParent);
auto pack = sourceModel()->data(index, Qt::UserRole).value<ModpacksCH::Modpack>(); auto pack = sourceModel()->data(index, Qt::UserRole).value<FTB::Modpack>();
return pack.name.contains(m_searchTerm, Qt::CaseInsensitive); return pack.name.contains(m_searchTerm, Qt::CaseInsensitive);
} }
bool FilterModel::lessThan(const QModelIndex& left, const QModelIndex& right) const bool FilterModel::lessThan(const QModelIndex& left, const QModelIndex& right) const
{ {
ModpacksCH::Modpack leftPack = sourceModel()->data(left, Qt::UserRole).value<ModpacksCH::Modpack>(); FTB::Modpack leftPack = sourceModel()->data(left, Qt::UserRole).value<FTB::Modpack>();
ModpacksCH::Modpack rightPack = sourceModel()->data(right, Qt::UserRole).value<ModpacksCH::Modpack>(); FTB::Modpack rightPack = sourceModel()->data(right, Qt::UserRole).value<FTB::Modpack>();
if (m_currentSorting == ByPlays) { if (m_currentSorting == ByPlays) {
return leftPack.plays < rightPack.plays; return leftPack.plays < rightPack.plays;

View File

@ -45,7 +45,7 @@ QVariant ListModel::data(const QModelIndex& index, int role) const
return QString("INVALID INDEX %1").arg(pos); return QString("INVALID INDEX %1").arg(pos);
} }
ModpacksCH::Modpack pack = m_modpacks.at(pos); FTB::Modpack pack = m_modpacks.at(pos);
if (role == Qt::DisplayRole) { if (role == Qt::DisplayRole) {
return pack.name; return pack.name;
} else if (role == Qt::ToolTipRole) { } else if (role == Qt::ToolTipRole) {
@ -80,7 +80,7 @@ QVariant ListModel::data(const QModelIndex& index, int role) const
void ListModel::getLogo(const QString& logo, const QString& logoUrl, LogoCallback callback) void ListModel::getLogo(const QString& logo, const QString& logoUrl, LogoCallback callback)
{ {
if (m_logoMap.contains(logo)) { if (m_logoMap.contains(logo)) {
callback(APPLICATION->metacache()->resolveEntry("ModpacksCHPacks", QString("logos/%1").arg(logo))->getFullPath()); callback(APPLICATION->metacache()->resolveEntry("FTBPacks", QString("logos/%1").arg(logo))->getFullPath());
} else { } else {
requestLogo(logo, logoUrl); requestLogo(logo, logoUrl);
} }
@ -95,7 +95,7 @@ void ListModel::request()
endResetModel(); endResetModel();
auto netJob = makeShared<NetJob>("Ftb::Request", APPLICATION->network()); auto netJob = makeShared<NetJob>("Ftb::Request", APPLICATION->network());
auto url = QString(BuildConfig.MODPACKSCH_API_BASE_URL + "public/modpack/all"); auto url = QString(BuildConfig.FTB_API_BASE_URL + "/modpack/all");
m_response.reset(new QByteArray()); m_response.reset(new QByteArray());
netJob->addNetAction(Net::Download::makeByteArray(QUrl(url), m_response)); netJob->addNetAction(Net::Download::makeByteArray(QUrl(url), m_response));
m_jobPtr = netJob; m_jobPtr = netJob;
@ -119,8 +119,7 @@ void ListModel::requestFinished()
QJsonParseError parse_error{}; QJsonParseError parse_error{};
QJsonDocument doc = QJsonDocument::fromJson(*m_response, &parse_error); QJsonDocument doc = QJsonDocument::fromJson(*m_response, &parse_error);
if (parse_error.error != QJsonParseError::NoError) { if (parse_error.error != QJsonParseError::NoError) {
qWarning() << "Error while parsing JSON response from ModpacksCH at " << parse_error.offset qWarning() << "Error while parsing JSON response from FTB at " << parse_error.offset << " reason: " << parse_error.errorString();
<< " reason: " << parse_error.errorString();
qWarning() << *m_response; qWarning() << *m_response;
return; return;
} }
@ -146,7 +145,7 @@ void ListModel::requestFailed(QString)
void ListModel::requestPack() void ListModel::requestPack()
{ {
auto netJob = makeShared<NetJob>("Ftb::Search", APPLICATION->network()); auto netJob = makeShared<NetJob>("Ftb::Search", APPLICATION->network());
auto searchUrl = QString(BuildConfig.MODPACKSCH_API_BASE_URL + "public/modpack/%1").arg(m_currentPack); auto searchUrl = QString(BuildConfig.FTB_API_BASE_URL + "/modpack/%1").arg(m_currentPack);
m_response.reset(new QByteArray()); m_response.reset(new QByteArray());
netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), m_response)); netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), m_response));
m_jobPtr = netJob; m_jobPtr = netJob;
@ -168,27 +167,26 @@ void ListModel::packRequestFinished()
QJsonDocument doc = QJsonDocument::fromJson(*m_response, &parse_error); QJsonDocument doc = QJsonDocument::fromJson(*m_response, &parse_error);
if (parse_error.error != QJsonParseError::NoError) { if (parse_error.error != QJsonParseError::NoError) {
qWarning() << "Error while parsing JSON response from ModpacksCH at " << parse_error.offset qWarning() << "Error while parsing JSON response from FTB at " << parse_error.offset << " reason: " << parse_error.errorString();
<< " reason: " << parse_error.errorString();
qWarning() << *m_response; qWarning() << *m_response;
return; return;
} }
auto obj = doc.object(); auto obj = doc.object();
ModpacksCH::Modpack pack; FTB::Modpack pack;
try { try {
ModpacksCH::loadModpack(pack, obj); FTB::loadModpack(pack, obj);
} catch (const JSONValidationError& e) { } catch (const JSONValidationError& e) {
qDebug() << QString::fromUtf8(*m_response); qDebug() << QString::fromUtf8(*m_response);
qWarning() << "Error while reading pack manifest from ModpacksCH: " << e.cause(); qWarning() << "Error while reading pack manifest from FTB: " << e.cause();
return; return;
} }
// Since there is no guarantee that packs have a version, this will just // Since there is no guarantee that packs have a version, this will just
// ignore those "dud" packs. // ignore those "dud" packs.
if (pack.versions.empty()) { if (pack.versions.empty()) {
qWarning() << "ModpacksCH Pack " << pack.id << " ignored. reason: lacking any versions"; qWarning() << "FTB Pack " << pack.id << " ignored. reason: lacking any versions";
} else { } else {
beginInsertRows(QModelIndex(), m_modpacks.size(), m_modpacks.size()); beginInsertRows(QModelIndex(), m_modpacks.size(), m_modpacks.size());
m_modpacks.append(pack); m_modpacks.append(pack);
@ -231,9 +229,9 @@ void ListModel::requestLogo(QString logo, QString url)
return; return;
} }
MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("ModpacksCHPacks", QString("logos/%1").arg(logo)); MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("FTBPacks", QString("logos/%1").arg(logo));
auto job = makeShared<NetJob>(QString("ModpacksCH Icon Download %1").arg(logo), APPLICATION->network()); auto job = makeShared<NetJob>(QString("FTB Icon Download %1").arg(logo), APPLICATION->network());
job->setAskRetry(false); job->setAskRetry(false);
job->addNetAction(Net::Download::makeCached(QUrl(url), entry)); job->addNetAction(Net::Download::makeCached(QUrl(url), entry));

View File

@ -19,7 +19,7 @@
#include <QAbstractListModel> #include <QAbstractListModel>
#include <QIcon> #include <QIcon>
#include "modplatform/modpacksch/FTBPackManifest.h" #include "modplatform/ftb/FTBPackManifest.h"
#include "net/NetJob.h" #include "net/NetJob.h"
namespace Ftb { namespace Ftb {
@ -31,8 +31,8 @@ struct Logo {
bool failed = false; bool failed = false;
}; };
typedef QMap<QString, Logo> LogoMap; using LogoMap = QMap<QString, Logo>;
typedef std::function<void(QString)> LogoCallback; using LogoCallback = std::function<void(QString)>;
class ListModel : public QAbstractListModel { class ListModel : public QAbstractListModel {
Q_OBJECT Q_OBJECT
@ -70,7 +70,7 @@ class ListModel : public QAbstractListModel {
private: private:
bool m_aborted = false; bool m_aborted = false;
QList<ModpacksCH::Modpack> m_modpacks; QList<FTB::Modpack> m_modpacks;
LogoMap m_logoMap; LogoMap m_logoMap;
NetJob::Ptr m_jobPtr; NetJob::Ptr m_jobPtr;

View File

@ -40,7 +40,7 @@
#include <QKeyEvent> #include <QKeyEvent>
#include "modplatform/modpacksch/FTBPackInstallTask.h" #include "modplatform/ftb/FTBPackInstallTask.h"
#include "ui/dialogs/NewInstanceDialog.h" #include "ui/dialogs/NewInstanceDialog.h"
#include "Markdown.h" #include "Markdown.h"
@ -130,7 +130,7 @@ void FtbPage::suggestCurrent()
return; return;
} }
m_dialog->setSuggestedPack(m_selected.name, m_selectedVersion, new ModpacksCH::PackInstallTask(m_selected, m_selectedVersion, this)); m_dialog->setSuggestedPack(m_selected.name, m_selectedVersion, new FTB::PackInstallTask(m_selected, m_selectedVersion, this));
for (auto art : m_selected.art) { for (auto art : m_selected.art) {
if (art.type == "square") { if (art.type == "square") {
auto editedLogoName = "ftb_" + m_selected.safeName; auto editedLogoName = "ftb_" + m_selected.safeName;
@ -162,7 +162,7 @@ void FtbPage::onSelectionChanged(QModelIndex first, QModelIndex second)
return; return;
} }
m_selected = m_filterModel->data(first, Qt::UserRole).value<ModpacksCH::Modpack>(); m_selected = m_filterModel->data(first, Qt::UserRole).value<FTB::Modpack>();
QString output = markdownToHTML(m_selected.description.toUtf8()); QString output = markdownToHTML(m_selected.description.toUtf8());
m_ui->packDescription->setHtml(output); m_ui->packDescription->setHtml(output);
@ -185,3 +185,13 @@ void FtbPage::onVersionSelectionChanged(QString data)
m_selectedVersion = data; m_selectedVersion = data;
suggestCurrent(); suggestCurrent();
} }
QString FtbPage::getSerachTerm() const
{
return m_ui->searchEdit->text();
}
void FtbPage::setSearchTerm(QString term)
{
m_ui->searchEdit->setText(term);
}

View File

@ -43,6 +43,7 @@
#include "Application.h" #include "Application.h"
#include "tasks/Task.h" #include "tasks/Task.h"
#include "ui/pages/BasePage.h" #include "ui/pages/BasePage.h"
#include "ui/pages/modplatform/ModpackProviderBasePage.h"
namespace Ui { namespace Ui {
class FtbPage; class FtbPage;
@ -50,7 +51,7 @@ class FtbPage;
class NewInstanceDialog; class NewInstanceDialog;
class FtbPage : public QWidget, public BasePage { class FtbPage : public QWidget, public ModpackProviderBasePage {
Q_OBJECT Q_OBJECT
public: public:
@ -68,6 +69,11 @@ class FtbPage : public QWidget, public BasePage {
bool eventFilter(QObject* watched, QEvent* event) override; bool eventFilter(QObject* watched, QEvent* event) override;
/** Programatically set the term in the search bar. */
virtual void setSearchTerm(QString) override;
/** Get the current term in the search bar. */
[[nodiscard]] virtual QString getSerachTerm() const override;
private: private:
void suggestCurrent(); void suggestCurrent();
@ -84,7 +90,7 @@ class FtbPage : public QWidget, public BasePage {
Ftb::ListModel* m_listModel = nullptr; Ftb::ListModel* m_listModel = nullptr;
Ftb::FilterModel* m_filterModel = nullptr; Ftb::FilterModel* m_filterModel = nullptr;
ModpacksCH::Modpack m_selected; FTB::Modpack m_selected;
QString m_selectedVersion; QString m_selectedVersion;
bool m_initialised{ false }; bool m_initialised{ false };