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<SortingMethod> sorting;
std::optional<ModPlatform::ModLoaderTypes> loaders;
std::optional<std::list<Version> > versions;
std::optional<std::list<Version>> versions;
std::optional<QString> side;
std::optional<QStringList> categoryIds;
};
@ -168,11 +168,23 @@ class ResourceAPI {
protected:
[[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;
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
return s;

View File

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

View File

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

View File

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

View File

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