mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2026-07-03 11:56:57 +03:00
chore(clang-tidy): modernize the code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
2e45d135c5
commit
effa8bedb1
42 changed files with 854 additions and 786 deletions
|
|
@ -3,10 +3,8 @@
|
|||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
#include "FlameAPI.h"
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include "BuildConfig.h"
|
||||
#include "FlameModIndex.h"
|
||||
|
||||
#include "Application.h"
|
||||
#include "Json.h"
|
||||
|
|
@ -19,17 +17,17 @@ std::pair<Task::Ptr, QByteArray*> FlameAPI::matchFingerprints(const QList<uint>&
|
|||
{
|
||||
auto netJob = makeShared<NetJob>(QString("Flame::MatchFingerprints"), APPLICATION->network());
|
||||
|
||||
QJsonObject body_obj;
|
||||
QJsonArray fingerprints_arr;
|
||||
for (auto& fp : fingerprints) {
|
||||
fingerprints_arr.append(QString("%1").arg(fp));
|
||||
QJsonObject bodyObj;
|
||||
QJsonArray fingerprintsArr;
|
||||
for (const auto& fp : fingerprints) {
|
||||
fingerprintsArr.append(QString("%1").arg(fp));
|
||||
}
|
||||
|
||||
body_obj["fingerprints"] = fingerprints_arr;
|
||||
bodyObj["fingerprints"] = fingerprintsArr;
|
||||
|
||||
QJsonDocument body(body_obj);
|
||||
auto body_raw = body.toJson();
|
||||
auto [action, response] = Net::ApiUpload::makeByteArray(QString(BuildConfig.FLAME_BASE_URL + "/fingerprints"), body_raw);
|
||||
QJsonDocument body(bodyObj);
|
||||
auto bodyRaw = body.toJson();
|
||||
auto [action, response] = Net::ApiUpload::makeByteArray(QString(BuildConfig.FLAME_BASE_URL + "/fingerprints"), bodyRaw);
|
||||
netJob->addNetAction(action);
|
||||
|
||||
return { netJob, response };
|
||||
|
|
@ -47,14 +45,14 @@ QString FlameAPI::getModFileChangelog(int modId, int fileId)
|
|||
netJob->addNetAction(action);
|
||||
|
||||
QObject::connect(netJob.get(), &NetJob::succeeded, [&netJob, response, &changelog] {
|
||||
QJsonParseError parse_error{};
|
||||
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
|
||||
if (parse_error.error != QJsonParseError::NoError) {
|
||||
qWarning() << "Error while parsing JSON response from Flame::FileChangelog at" << parse_error.offset
|
||||
<< "reason:" << parse_error.errorString();
|
||||
QJsonParseError parseError{};
|
||||
QJsonDocument doc = QJsonDocument::fromJson(*response, &parseError);
|
||||
if (parseError.error != QJsonParseError::NoError) {
|
||||
qWarning() << "Error while parsing JSON response from Flame::FileChangelog at" << parseError.offset
|
||||
<< "reason:" << parseError.errorString();
|
||||
qWarning() << *response;
|
||||
|
||||
netJob->failed(parse_error.errorString());
|
||||
netJob->failed(parseError.errorString());
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -80,14 +78,14 @@ QString FlameAPI::getModDescription(int modId)
|
|||
netJob->addNetAction(action);
|
||||
|
||||
QObject::connect(netJob.get(), &NetJob::succeeded, [&netJob, response, &description] {
|
||||
QJsonParseError parse_error{};
|
||||
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
|
||||
if (parse_error.error != QJsonParseError::NoError) {
|
||||
qWarning() << "Error while parsing JSON response from Flame::ModDescription at" << parse_error.offset
|
||||
<< "reason:" << parse_error.errorString();
|
||||
QJsonParseError parseError{};
|
||||
QJsonDocument doc = QJsonDocument::fromJson(*response, &parseError);
|
||||
if (parseError.error != QJsonParseError::NoError) {
|
||||
qWarning() << "Error while parsing JSON response from Flame::ModDescription at" << parseError.offset
|
||||
<< "reason:" << parseError.errorString();
|
||||
qWarning() << *response;
|
||||
|
||||
netJob->failed(parse_error.errorString());
|
||||
netJob->failed(parseError.errorString());
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -106,48 +104,48 @@ std::pair<Task::Ptr, QByteArray*> FlameAPI::getProjects(QStringList addonIds) co
|
|||
{
|
||||
auto netJob = makeShared<NetJob>(QString("Flame::GetProjects"), APPLICATION->network());
|
||||
|
||||
QJsonObject body_obj;
|
||||
QJsonArray addons_arr;
|
||||
QJsonObject bodyObj;
|
||||
QJsonArray addonsArr;
|
||||
for (auto& addonId : addonIds) {
|
||||
addons_arr.append(addonId);
|
||||
addonsArr.append(addonId);
|
||||
}
|
||||
|
||||
body_obj["modIds"] = addons_arr;
|
||||
bodyObj["modIds"] = addonsArr;
|
||||
|
||||
QJsonDocument body(body_obj);
|
||||
auto body_raw = body.toJson();
|
||||
auto [action, response] = Net::ApiUpload::makeByteArray(QString(BuildConfig.FLAME_BASE_URL + "/mods"), body_raw);
|
||||
QJsonDocument body(bodyObj);
|
||||
auto bodyRaw = body.toJson();
|
||||
auto [action, response] = Net::ApiUpload::makeByteArray(QString(BuildConfig.FLAME_BASE_URL + "/mods"), bodyRaw);
|
||||
netJob->addNetAction(action);
|
||||
|
||||
QObject::connect(netJob.get(), &NetJob::failed, [body_raw] { qDebug() << body_raw; });
|
||||
QObject::connect(netJob.get(), &NetJob::failed, [bodyRaw] { qDebug() << bodyRaw; });
|
||||
|
||||
return { netJob, response };
|
||||
}
|
||||
|
||||
std::pair<Task::Ptr, QByteArray*> FlameAPI::getFiles(const QStringList& fileIds) const
|
||||
std::pair<Task::Ptr, QByteArray*> FlameAPI::getFiles(const QStringList& fileIds)
|
||||
{
|
||||
auto netJob = makeShared<NetJob>(QString("Flame::GetFiles"), APPLICATION->network());
|
||||
|
||||
QJsonObject body_obj;
|
||||
QJsonArray files_arr;
|
||||
for (auto& fileId : fileIds) {
|
||||
files_arr.append(fileId);
|
||||
QJsonObject bodyObj;
|
||||
QJsonArray filesArr;
|
||||
for (const auto& fileId : fileIds) {
|
||||
filesArr.append(fileId);
|
||||
}
|
||||
|
||||
body_obj["fileIds"] = files_arr;
|
||||
bodyObj["fileIds"] = filesArr;
|
||||
|
||||
QJsonDocument body(body_obj);
|
||||
auto body_raw = body.toJson();
|
||||
QJsonDocument body(bodyObj);
|
||||
auto bodyRaw = body.toJson();
|
||||
|
||||
auto [action, response] = Net::ApiUpload::makeByteArray(QString(BuildConfig.FLAME_BASE_URL + "/mods/files"), body_raw);
|
||||
auto [action, response] = Net::ApiUpload::makeByteArray(QString(BuildConfig.FLAME_BASE_URL + "/mods/files"), bodyRaw);
|
||||
netJob->addNetAction(action);
|
||||
|
||||
QObject::connect(netJob.get(), &NetJob::failed, [body_raw] { qDebug() << body_raw; });
|
||||
QObject::connect(netJob.get(), &NetJob::failed, [bodyRaw] { qDebug() << bodyRaw; });
|
||||
|
||||
return { netJob, response };
|
||||
}
|
||||
|
||||
std::pair<Task::Ptr, QByteArray*> FlameAPI::getFile(const QString& addonId, const QString& fileId) const
|
||||
std::pair<Task::Ptr, QByteArray*> FlameAPI::getFile(const QString& addonId, const QString& fileId)
|
||||
{
|
||||
auto netJob = makeShared<NetJob>(QString("Flame::GetFile"), APPLICATION->network());
|
||||
auto [action, response] =
|
||||
|
|
@ -162,14 +160,14 @@ std::pair<Task::Ptr, QByteArray*> FlameAPI::getFile(const QString& addonId, cons
|
|||
QList<ResourceAPI::SortingMethod> FlameAPI::getSortingMethods() const
|
||||
{
|
||||
// https://docs.curseforge.com/?python#tocS_ModsSearchSortField
|
||||
return { { .index = 1, .name = "Featured", .readable_name = QObject::tr("Sort by Featured") },
|
||||
{ .index = 2, .name = "Popularity", .readable_name = QObject::tr("Sort by Popularity") },
|
||||
{ .index = 3, .name = "LastUpdated", .readable_name = QObject::tr("Sort by Last Updated") },
|
||||
{ .index = 4, .name = "Name", .readable_name = QObject::tr("Sort by Name") },
|
||||
{ .index = 5, .name = "Author", .readable_name = QObject::tr("Sort by Author") },
|
||||
{ .index = 6, .name = "TotalDownloads", .readable_name = QObject::tr("Sort by Downloads") },
|
||||
{ .index = 7, .name = "Category", .readable_name = QObject::tr("Sort by Category") },
|
||||
{ .index = 8, .name = "GameVersion", .readable_name = QObject::tr("Sort by Game Version") } };
|
||||
return { { .index = 1, .name = "Featured", .readableName = QObject::tr("Sort by Featured") },
|
||||
{ .index = 2, .name = "Popularity", .readableName = QObject::tr("Sort by Popularity") },
|
||||
{ .index = 3, .name = "LastUpdated", .readableName = QObject::tr("Sort by Last Updated") },
|
||||
{ .index = 4, .name = "Name", .readableName = QObject::tr("Sort by Name") },
|
||||
{ .index = 5, .name = "Author", .readableName = QObject::tr("Sort by Author") },
|
||||
{ .index = 6, .name = "TotalDownloads", .readableName = QObject::tr("Sort by Downloads") },
|
||||
{ .index = 7, .name = "Category", .readableName = QObject::tr("Sort by Category") },
|
||||
{ .index = 8, .name = "GameVersion", .readableName = QObject::tr("Sort by Game Version") } };
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
|
@ -205,7 +203,7 @@ std::pair<Task::Ptr, QByteArray*> FlameAPI::getCategories(ModPlatform::ResourceT
|
|||
auto [action, response] = Net::ApiDownload::makeByteArray(
|
||||
QUrl(QString(BuildConfig.FLAME_BASE_URL + "/categories?gameId=432&classId=%1").arg(getClassId(type))));
|
||||
netJob->addNetAction(action);
|
||||
QObject::connect(netJob.get(), &Task::failed, [](QString msg) { qDebug() << "Flame failed to get categories:" << msg; });
|
||||
QObject::connect(netJob.get(), &Task::failed, [](const QString& msg) { qDebug() << "Flame failed to get categories:" << msg; });
|
||||
return { netJob, response };
|
||||
}
|
||||
|
||||
|
|
@ -217,11 +215,10 @@ std::pair<Task::Ptr, QByteArray*> FlameAPI::getModCategories()
|
|||
QList<ModPlatform::Category> FlameAPI::loadModCategories(const QByteArray& response)
|
||||
{
|
||||
QList<ModPlatform::Category> categories;
|
||||
QJsonParseError parse_error{};
|
||||
QJsonDocument doc = QJsonDocument::fromJson(response, &parse_error);
|
||||
if (parse_error.error != QJsonParseError::NoError) {
|
||||
qWarning() << "Error while parsing JSON response from categories at" << parse_error.offset
|
||||
<< "reason:" << parse_error.errorString();
|
||||
QJsonParseError parseError{};
|
||||
QJsonDocument doc = QJsonDocument::fromJson(response, &parseError);
|
||||
if (parseError.error != QJsonParseError::NoError) {
|
||||
qWarning() << "Error while parsing JSON response from categories at" << parseError.offset << "reason:" << parseError.errorString();
|
||||
qWarning() << *response;
|
||||
return categories;
|
||||
}
|
||||
|
|
@ -245,17 +242,17 @@ QList<ModPlatform::Category> FlameAPI::loadModCategories(const QByteArray& respo
|
|||
return categories;
|
||||
};
|
||||
|
||||
std::optional<ModPlatform::IndexedVersion> FlameAPI::getLatestVersion(QList<ModPlatform::IndexedVersion> versions,
|
||||
QList<ModPlatform::ModLoaderType> instanceLoaders,
|
||||
ModPlatform::ModLoaderTypes modLoaders,
|
||||
std::optional<ModPlatform::IndexedVersion> FlameAPI::getLatestVersion(const QList<ModPlatform::IndexedVersion>& versions,
|
||||
const QList<ModPlatform::ModLoaderType>& instanceLoaders,
|
||||
ModPlatform::ModLoaderTypes fallback,
|
||||
bool checkLoaders)
|
||||
{
|
||||
static const auto noLoader = ModPlatform::ModLoaderType(0);
|
||||
static const auto s_noLoader = ModPlatform::ModLoaderType(0);
|
||||
if (!checkLoaders) {
|
||||
std::optional<ModPlatform::IndexedVersion> ver;
|
||||
for (auto file_tmp : versions) {
|
||||
if (!ver.has_value() || file_tmp.date > ver->date) {
|
||||
ver = file_tmp;
|
||||
for (const auto& fileTmp : versions) {
|
||||
if (!ver.has_value() || fileTmp.date > ver->date) {
|
||||
ver = fileTmp;
|
||||
}
|
||||
}
|
||||
return ver;
|
||||
|
|
@ -271,26 +268,26 @@ std::optional<ModPlatform::IndexedVersion> FlameAPI::getLatestVersion(QList<ModP
|
|||
bestMatch[loader] = version;
|
||||
}
|
||||
};
|
||||
for (auto file_tmp : versions) {
|
||||
auto loaders = ModPlatform::modLoaderTypesToList(file_tmp.loaders);
|
||||
for (const auto& fileTmp : versions) {
|
||||
auto loaders = ModPlatform::modLoaderTypesToList(fileTmp.loaders);
|
||||
if (loaders.isEmpty()) {
|
||||
checkVersion(file_tmp, noLoader);
|
||||
checkVersion(fileTmp, s_noLoader);
|
||||
} else {
|
||||
for (auto loader : loaders) {
|
||||
checkVersion(file_tmp, loader);
|
||||
checkVersion(fileTmp, loader);
|
||||
}
|
||||
}
|
||||
}
|
||||
// edge case: mod has installed for forge but the instance is fabric => fabric version will be prioritizated on update
|
||||
auto currentLoaders = instanceLoaders + ModPlatform::modLoaderTypesToList(modLoaders);
|
||||
currentLoaders.append(noLoader); // add a fallback in case the versions do not define a loader
|
||||
auto currentLoaders = instanceLoaders + ModPlatform::modLoaderTypesToList(fallback);
|
||||
currentLoaders.append(s_noLoader); // add a fallback in case the versions do not define a loader
|
||||
|
||||
for (auto loader : currentLoaders) {
|
||||
if (bestMatch.contains(loader)) {
|
||||
auto bestForLoader = bestMatch.value(loader);
|
||||
// awkward case where the mod has only two loaders and one of them is not specified
|
||||
if (loader != noLoader && bestMatch.contains(noLoader) && bestMatch.size() == 2) {
|
||||
auto bestForNoLoader = bestMatch.value(noLoader);
|
||||
if (loader != s_noLoader && bestMatch.contains(s_noLoader) && bestMatch.size() == 2) {
|
||||
auto bestForNoLoader = bestMatch.value(s_noLoader);
|
||||
if (bestForNoLoader.date > bestForLoader.date) {
|
||||
return bestForNoLoader;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue