mirror of
https://github.com/PrismLauncher/PrismLauncher
synced 2026-04-23 09:05:03 +00:00
fix: don't always ask for the changelog from modrinth
- per https://discordapp.com/channels/734077874708938864/974050507150729236/1461487847142985982 `/project/<id>/version` now has an `include_changelog` query param which can be set to false to save oodles of bandwidth Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
This commit is contained in:
parent
98c3129424
commit
e16235c1ca
|
|
@ -180,7 +180,9 @@ Task::Ptr GetModDependenciesTask::prepareDependencyTask(const ModPlatform::Depen
|
|||
tasks->addTask(getProjectInfoTask(pDep));
|
||||
}
|
||||
|
||||
ResourceAPI::DependencySearchArgs args = { dep, m_version, m_loaderType };
|
||||
ResourceAPI::DependencySearchArgs args = {
|
||||
.dependency = dep, .mcVersion = m_version, .loader = m_loaderType, .includeChangelog = true
|
||||
};
|
||||
ResourceAPI::Callback<ModPlatform::IndexedVersion> callbacks;
|
||||
callbacks.on_fail = [](QString reason, int) {
|
||||
qCritical() << tr("A network error occurred. Could not load project dependencies:%1").arg(reason);
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ class ResourceAPI {
|
|||
template <typename T>
|
||||
struct Callback {
|
||||
std::function<void(T&)> on_succeed;
|
||||
std::function<void(QString const& reason, int network_error_code)> on_fail;
|
||||
std::function<void(const QString& reason, int network_error_code)> on_fail;
|
||||
std::function<void()> on_abort;
|
||||
};
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ class ResourceAPI {
|
|||
std::optional<std::vector<Version>> versions;
|
||||
std::optional<ModPlatform::Side> side;
|
||||
std::optional<QStringList> categoryIds;
|
||||
bool openSource;
|
||||
bool openSource{};
|
||||
};
|
||||
|
||||
struct VersionSearchArgs {
|
||||
|
|
@ -94,6 +94,7 @@ class ResourceAPI {
|
|||
std::optional<std::vector<Version>> mcVersions;
|
||||
std::optional<ModPlatform::ModLoaderTypes> loaders;
|
||||
ModPlatform::ResourceType resourceType;
|
||||
bool includeChangelog{};
|
||||
};
|
||||
|
||||
struct ProjectInfoArgs {
|
||||
|
|
@ -104,6 +105,7 @@ class ResourceAPI {
|
|||
ModPlatform::Dependency dependency;
|
||||
Version mcVersion;
|
||||
ModPlatform::ModLoaderTypes loader;
|
||||
bool includeChangelog{};
|
||||
};
|
||||
|
||||
public:
|
||||
|
|
@ -128,10 +130,10 @@ class ResourceAPI {
|
|||
QString getGameVersionsString(std::vector<Version> mcVersions) const;
|
||||
|
||||
public:
|
||||
virtual auto getSearchURL(SearchArgs const& args) const -> std::optional<QString> = 0;
|
||||
virtual auto getInfoURL(QString const& id) const -> std::optional<QString> = 0;
|
||||
virtual auto getVersionsURL(VersionSearchArgs const& args) const -> std::optional<QString> = 0;
|
||||
virtual auto getDependencyURL(DependencySearchArgs const& args) const -> std::optional<QString> = 0;
|
||||
virtual auto getSearchURL(const SearchArgs& args) const -> std::optional<QString> = 0;
|
||||
virtual auto getInfoURL(const QString& id) const -> std::optional<QString> = 0;
|
||||
virtual auto getVersionsURL(const VersionSearchArgs& args) const -> std::optional<QString> = 0;
|
||||
virtual auto getDependencyURL(const DependencySearchArgs& args) const -> std::optional<QString> = 0;
|
||||
|
||||
/** Functions to load data into a pack.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -186,6 +186,8 @@ class ModrinthAPI : public ResourceAPI {
|
|||
get_arguments.append(QString("game_versions=[%1]").arg(getGameVersionsString(args.mcVersions.value())));
|
||||
if (args.loaders.has_value())
|
||||
get_arguments.append(QString("loaders=[\"%1\"]").arg(getModLoaderStrings(args.loaders.value()).join("\",\"")));
|
||||
}
|
||||
get_arguments.append(QString("include_changelog=%1").arg(args.includeChangelog ? "true" : "false"));
|
||||
|
||||
return QString("%1/project/%2/version%3%4")
|
||||
.arg(BuildConfig.MODRINTH_PROD_URL, args.pack->addonId.toString(), get_arguments.isEmpty() ? "" : "?", get_arguments.join('&'));
|
||||
|
|
@ -210,12 +212,14 @@ class ModrinthAPI : public ResourceAPI {
|
|||
|
||||
std::optional<QString> getDependencyURL(DependencySearchArgs const& args) const override
|
||||
{
|
||||
return args.dependency.version.length() != 0 ? QString("%1/version/%2").arg(BuildConfig.MODRINTH_PROD_URL, args.dependency.version)
|
||||
: QString("%1/project/%2/version?game_versions=[\"%3\"]&loaders=[\"%4\"]")
|
||||
.arg(BuildConfig.MODRINTH_PROD_URL)
|
||||
.arg(args.dependency.addonId.toString())
|
||||
.arg(mapMCVersionToModrinth(args.mcVersion))
|
||||
.arg(getModLoaderStrings(args.loader).join("\",\""));
|
||||
return args.dependency.version.length() != 0
|
||||
? QString("%1/version/%2").arg(BuildConfig.MODRINTH_PROD_URL, args.dependency.version)
|
||||
: QString(R"(%1/project/%2/version?game_versions=["%3"]&loaders=["%4"]&include_changelog=%5)")
|
||||
.arg(BuildConfig.MODRINTH_PROD_URL)
|
||||
.arg(args.dependency.addonId.toString())
|
||||
.arg(mapMCVersionToModrinth(args.mcVersion))
|
||||
.arg(getModLoaderStrings(args.loader).join("\",\""))
|
||||
.arg(args.includeChangelog ? "true" : "false");
|
||||
};
|
||||
|
||||
QJsonArray documentToArray(QJsonDocument& obj) const override { return obj.object().value("hits").toArray(); }
|
||||
|
|
|
|||
|
|
@ -148,7 +148,9 @@ ModPlatform::IndexedVersion Modrinth::loadIndexedPackVersion(QJsonObject& obj, Q
|
|||
file.version_number = Json::requireString(obj, "version_number");
|
||||
file.version_type = ModPlatform::IndexedVersionType::fromString(Json::requireString(obj, "version_type"));
|
||||
|
||||
file.changelog = Json::requireString(obj, "changelog");
|
||||
if (obj.contains("changelog")) {
|
||||
file.changelog = Json::requireString(obj, "changelog");
|
||||
}
|
||||
|
||||
auto dependencies = obj["dependencies"].toArray();
|
||||
for (auto d : dependencies) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue