ensure that the snapshot mapping is on all apis

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
(cherry picked from commit 8e5a7c6e333969b5412efd1349f9430ced5654c8)
This commit is contained in:
Trial97 2025-01-17 10:35:13 +02:00 committed by github-actions[bot]
parent f8dc58665b
commit ae3e1a262e
5 changed files with 40 additions and 24 deletions

View File

@ -73,7 +73,7 @@ class ResourceAPI {
std::optional<QString> search; std::optional<QString> search;
std::optional<SortingMethod> sorting; std::optional<SortingMethod> sorting;
std::optional<ModPlatform::ModLoaderTypes> loaders; std::optional<ModPlatform::ModLoaderTypes> loaders;
std::optional<std::list<Version> > versions; std::optional<std::list<Version>> versions;
std::optional<QString> side; std::optional<QString> side;
std::optional<QStringList> categoryIds; std::optional<QStringList> categoryIds;
}; };
@ -168,11 +168,23 @@ class ResourceAPI {
protected: protected:
[[nodiscard]] inline QString debugName() const { return "External resource API"; } [[nodiscard]] inline QString debugName() const { return "External resource API"; }
[[nodiscard]] inline auto getGameVersionsString(std::list<Version> mcVersions) const -> QString [[nodiscard]] inline QString mapMCVersionToModrinth(Version v) const
{
static const QString preString = " Pre-Release ";
auto verStr = v.toString();
if (verStr.contains(preString)) {
verStr.replace(preString, "-pre");
}
verStr.replace(" ", "-");
return verStr;
}
[[nodiscard]] inline QString getGameVersionsString(std::list<Version> mcVersions) const
{ {
QString s; QString s;
for (auto& ver : mcVersions) { for (auto& ver : mcVersions) {
s += QString("\"%1\",").arg(ver.toString()); s += QString("\"%1\",").arg(mapMCVersionToModrinth(ver));
} }
s.remove(s.length() - 1, 1); // remove last comma s.remove(s.length() - 1, 1); // remove last comma
return s; return s;

View File

@ -54,7 +54,7 @@ Task::Ptr ModrinthAPI::latestVersion(QString hash,
if (mcVersions.has_value()) { if (mcVersions.has_value()) {
QStringList game_versions; QStringList game_versions;
for (auto& ver : mcVersions.value()) { for (auto& ver : mcVersions.value()) {
game_versions.append(ver.toString()); game_versions.append(mapMCVersionToModrinth(ver));
} }
Json::writeStringList(body_obj, "game_versions", game_versions); Json::writeStringList(body_obj, "game_versions", game_versions);
} }
@ -87,7 +87,7 @@ Task::Ptr ModrinthAPI::latestVersions(const QStringList& hashes,
if (mcVersions.has_value()) { if (mcVersions.has_value()) {
QStringList game_versions; QStringList game_versions;
for (auto& ver : mcVersions.value()) { for (auto& ver : mcVersions.value()) {
game_versions.append(ver.toString()); game_versions.append(mapMCVersionToModrinth(ver));
} }
Json::writeStringList(body_obj, "game_versions", game_versions); Json::writeStringList(body_obj, "game_versions", game_versions);
} }

View File

@ -81,6 +81,21 @@ class ModrinthAPI : public NetworkResourceAPI {
return {}; return {};
} }
[[nodiscard]] static inline QString mapMCVersionFromModrinth(QString v)
{
static const QString preString = " Pre-Release ";
bool pre = false;
if (v.contains("-pre")) {
pre = true;
v.replace("-pre", preString);
}
v.replace("-", " ");
if (pre) {
v.replace(" Pre Release ", preString);
}
return v;
}
private: private:
[[nodiscard]] static QString resourceTypeParameter(ModPlatform::ResourceType type) [[nodiscard]] static QString resourceTypeParameter(ModPlatform::ResourceType type)
{ {
@ -168,16 +183,9 @@ class ModrinthAPI : public NetworkResourceAPI {
QString getGameVersionsArray(std::list<Version> mcVersions) const QString getGameVersionsArray(std::list<Version> mcVersions) const
{ {
static const QString preString = " Pre-Release ";
QString s; QString s;
for (auto& ver : mcVersions) { for (auto& ver : mcVersions) {
auto verStr = ver.toString(); s += QString("\"versions:%1\",").arg(mapMCVersionToModrinth(ver));
if (verStr.contains(preString)) {
verStr.replace(preString, "-pre");
}
verStr.replace(" ", "-");
s += QString("\"versions:%1\",").arg(verStr);
} }
s.remove(s.length() - 1, 1); // remove last comma s.remove(s.length() - 1, 1); // remove last comma
return s.isEmpty() ? QString() : s; return s.isEmpty() ? QString() : s;
@ -194,7 +202,7 @@ class ModrinthAPI : public NetworkResourceAPI {
: QString("%1/project/%2/version?game_versions=[\"%3\"]&loaders=[\"%4\"]") : QString("%1/project/%2/version?game_versions=[\"%3\"]&loaders=[\"%4\"]")
.arg(BuildConfig.MODRINTH_PROD_URL) .arg(BuildConfig.MODRINTH_PROD_URL)
.arg(args.dependency.addonId.toString()) .arg(args.dependency.addonId.toString())
.arg(args.mcVersion.toString()) .arg(mapMCVersionToModrinth(args.mcVersion))
.arg(getModLoaderStrings(args.loader).join("\",\"")); .arg(getModLoaderStrings(args.loader).join("\",\""));
}; };
}; };

View File

@ -131,9 +131,7 @@ void Modrinth::loadIndexedPackVersions(ModPlatform::IndexedPack& pack, QJsonArra
pack.versionsLoaded = true; pack.versionsLoaded = true;
} }
auto Modrinth::loadIndexedPackVersion(QJsonObject& obj, ModPlatform::IndexedVersion Modrinth::loadIndexedPackVersion(QJsonObject& obj, QString preferred_hash_type, QString preferred_file_name)
QString preferred_hash_type,
QString preferred_file_name) -> ModPlatform::IndexedVersion
{ {
ModPlatform::IndexedVersion file; ModPlatform::IndexedVersion file;
@ -145,7 +143,7 @@ auto Modrinth::loadIndexedPackVersion(QJsonObject& obj,
return {}; return {};
} }
for (auto mcVer : versionArray) { for (auto mcVer : versionArray) {
file.mcVersion.append(mcVer.toString()); file.mcVersion.append(ModrinthAPI::mapMCVersionFromModrinth(mcVer.toString()));
} }
auto loaders = Json::requireArray(obj, "loaders"); auto loaders = Json::requireArray(obj, "loaders");
for (auto loader : loaders) { for (auto loader : loaders) {
@ -247,9 +245,9 @@ auto Modrinth::loadIndexedPackVersion(QJsonObject& obj,
return {}; return {};
} }
auto Modrinth::loadDependencyVersions([[maybe_unused]] const ModPlatform::Dependency& m, ModPlatform::IndexedVersion Modrinth::loadDependencyVersions([[maybe_unused]] const ModPlatform::Dependency& m,
QJsonArray& arr, QJsonArray& arr,
const BaseInstance* inst) -> ModPlatform::IndexedVersion const BaseInstance* inst)
{ {
auto profile = (dynamic_cast<const MinecraftInstance*>(inst))->getPackProfile(); auto profile = (dynamic_cast<const MinecraftInstance*>(inst))->getPackProfile();
QString mcVersion = profile->getComponentVersion("net.minecraft"); QString mcVersion = profile->getComponentVersion("net.minecraft");

View File

@ -40,9 +40,6 @@
#include "modplatform/modrinth/ModrinthAPI.h" #include "modplatform/modrinth/ModrinthAPI.h"
#include "minecraft/MinecraftInstance.h"
#include "minecraft/PackProfile.h"
#include <QSet> #include <QSet>
static ModrinthAPI api; static ModrinthAPI api;
@ -134,6 +131,7 @@ auto loadIndexedVersion(QJsonObject& obj) -> ModpackVersion
auto gameVersions = Json::ensureArray(obj, "game_versions"); auto gameVersions = Json::ensureArray(obj, "game_versions");
if (!gameVersions.isEmpty()) { if (!gameVersions.isEmpty()) {
file.gameVersion = Json::ensureString(gameVersions[0]); file.gameVersion = Json::ensureString(gameVersions[0]);
file.gameVersion = ModrinthAPI::mapMCVersionFromModrinth(file.gameVersion);
} }
auto loaders = Json::requireArray(obj, "loaders"); auto loaders = Json::requireArray(obj, "loaders");
for (auto loader : loaders) { for (auto loader : loaders) {