mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2026-06-29 09:59:59 +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
|
|
@ -1,5 +1,7 @@
|
|||
#include "modplatform/ResourceAPI.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include "Application.h"
|
||||
#include "Json.h"
|
||||
#include "net/NetJob.h"
|
||||
|
|
@ -8,30 +10,30 @@
|
|||
|
||||
#include "net/ApiDownload.h"
|
||||
|
||||
Task::Ptr ResourceAPI::searchProjects(SearchArgs&& args, Callback<QList<ModPlatform::IndexedPack::Ptr>>&& callbacks) const
|
||||
Task::Ptr ResourceAPI::searchProjects(const SearchArgs& args, const Callback<QList<ModPlatform::IndexedPack::Ptr>>& callbacks) const
|
||||
{
|
||||
auto search_url_optional = getSearchURL(args);
|
||||
if (!search_url_optional.has_value()) {
|
||||
callbacks.on_fail("Failed to create search URL", -1);
|
||||
auto searchUrlOptional = getSearchURL(args);
|
||||
if (!searchUrlOptional.has_value()) {
|
||||
callbacks.onFail("Failed to create search URL", -1);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto search_url = search_url_optional.value();
|
||||
const auto& searchUrl = searchUrlOptional.value();
|
||||
|
||||
auto netJob = makeShared<NetJob>(QString("%1::Search").arg(debugName()), APPLICATION->network());
|
||||
|
||||
auto [action, response] = Net::ApiDownload::makeByteArray(QUrl(search_url));
|
||||
auto [action, response] = Net::ApiDownload::makeByteArray(QUrl(searchUrl));
|
||||
netJob->addNetAction(action);
|
||||
|
||||
QObject::connect(netJob.get(), &NetJob::succeeded, [this, response, callbacks] {
|
||||
QJsonParseError parse_error{};
|
||||
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
|
||||
if (parse_error.error != QJsonParseError::NoError) {
|
||||
qWarning() << "Error while parsing JSON response from" << debugName() << "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" << debugName() << "at" << parseError.offset
|
||||
<< "reason:" << parseError.errorString();
|
||||
qWarning() << *response;
|
||||
|
||||
callbacks.on_fail(parse_error.errorString(), -1);
|
||||
callbacks.onFail(parseError.errorString(), -1);
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
@ -52,7 +54,7 @@ Task::Ptr ResourceAPI::searchProjects(SearchArgs&& args, Callback<QList<ModPlatf
|
|||
}
|
||||
}
|
||||
|
||||
callbacks.on_succeed(newList);
|
||||
callbacks.onSucceed(newList);
|
||||
});
|
||||
|
||||
// Capture a weak_ptr instead of a shared_ptr to avoid circular dependency issues.
|
||||
|
|
@ -60,40 +62,44 @@ Task::Ptr ResourceAPI::searchProjects(SearchArgs&& args, Callback<QList<ModPlatf
|
|||
// as it only temporarily locks the resource when needed.
|
||||
auto weak = netJob.toWeakRef();
|
||||
QObject::connect(netJob.get(), &NetJob::failed, [weak, callbacks](const QString& reason) {
|
||||
int network_error_code = -1;
|
||||
int networkErrorCode = -1;
|
||||
if (auto netJob = weak.lock()) {
|
||||
if (auto* failed_action = netJob->getFailedActions().at(0); failed_action)
|
||||
network_error_code = failed_action->replyStatusCode();
|
||||
if (auto* failedAction = netJob->getFailedActions().at(0); failedAction) {
|
||||
networkErrorCode = failedAction->replyStatusCode();
|
||||
}
|
||||
}
|
||||
callbacks.on_fail(reason, network_error_code);
|
||||
callbacks.onFail(reason, networkErrorCode);
|
||||
});
|
||||
QObject::connect(netJob.get(), &NetJob::aborted, [callbacks] {
|
||||
if (callbacks.on_abort != nullptr)
|
||||
callbacks.on_abort();
|
||||
if (callbacks.onAbort != nullptr) {
|
||||
callbacks.onAbort();
|
||||
}
|
||||
});
|
||||
|
||||
return netJob;
|
||||
}
|
||||
|
||||
Task::Ptr ResourceAPI::getProjectVersions(VersionSearchArgs&& args, Callback<QVector<ModPlatform::IndexedVersion>>&& callbacks) const
|
||||
Task::Ptr ResourceAPI::getProjectVersions(const VersionSearchArgs& args,
|
||||
const Callback<QVector<ModPlatform::IndexedVersion>>& callbacks) const
|
||||
{
|
||||
auto versions_url_optional = getVersionsURL(args);
|
||||
if (!versions_url_optional.has_value())
|
||||
auto versionsUrlOptional = getVersionsURL(args);
|
||||
if (!versionsUrlOptional.has_value()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto versions_url = versions_url_optional.value();
|
||||
const auto& versionsUrl = versionsUrlOptional.value();
|
||||
|
||||
auto netJob = makeShared<NetJob>(QString("%1::Versions").arg(args.pack->name), APPLICATION->network());
|
||||
|
||||
auto [action, response] = Net::ApiDownload::makeByteArray(versions_url);
|
||||
auto [action, response] = Net::ApiDownload::makeByteArray(versionsUrl);
|
||||
netJob->addNetAction(action);
|
||||
|
||||
QObject::connect(netJob.get(), &NetJob::succeeded, [this, response, callbacks, args] {
|
||||
QJsonParseError parse_error{};
|
||||
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
|
||||
if (parse_error.error != QJsonParseError::NoError) {
|
||||
qWarning() << "Error while parsing JSON response for getting versions 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 for getting versions at" << parseError.offset
|
||||
<< "reason:" << parseError.errorString();
|
||||
qWarning() << *response;
|
||||
return;
|
||||
}
|
||||
|
|
@ -119,13 +125,13 @@ Task::Ptr ResourceAPI::getProjectVersions(VersionSearchArgs&& args, Callback<QVe
|
|||
// dates are in RFC 3339 format
|
||||
return a.date > b.date;
|
||||
};
|
||||
std::sort(unsortedVersions.begin(), unsortedVersions.end(), orderSortPredicate);
|
||||
std::ranges::sort(unsortedVersions, orderSortPredicate);
|
||||
} catch (const JSONValidationError& e) {
|
||||
qDebug() << doc;
|
||||
qWarning() << "Error while reading" << debugName() << "resource version:" << e.cause();
|
||||
}
|
||||
|
||||
callbacks.on_succeed(unsortedVersions);
|
||||
callbacks.onSucceed(unsortedVersions);
|
||||
});
|
||||
|
||||
// Capture a weak_ptr instead of a shared_ptr to avoid circular dependency issues.
|
||||
|
|
@ -133,87 +139,93 @@ Task::Ptr ResourceAPI::getProjectVersions(VersionSearchArgs&& args, Callback<QVe
|
|||
// as it only temporarily locks the resource when needed.
|
||||
auto weak = netJob.toWeakRef();
|
||||
QObject::connect(netJob.get(), &NetJob::failed, [weak, callbacks](const QString& reason) {
|
||||
int network_error_code = -1;
|
||||
int networkErrorCode = -1;
|
||||
if (auto netJob = weak.lock()) {
|
||||
if (auto* failed_action = netJob->getFailedActions().at(0); failed_action)
|
||||
network_error_code = failed_action->replyStatusCode();
|
||||
if (auto* failedAction = netJob->getFailedActions().at(0); failedAction) {
|
||||
networkErrorCode = failedAction->replyStatusCode();
|
||||
}
|
||||
}
|
||||
callbacks.on_fail(reason, network_error_code);
|
||||
callbacks.onFail(reason, networkErrorCode);
|
||||
});
|
||||
QObject::connect(netJob.get(), &NetJob::aborted, [callbacks] {
|
||||
if (callbacks.on_abort != nullptr)
|
||||
callbacks.on_abort();
|
||||
if (callbacks.onAbort != nullptr) {
|
||||
callbacks.onAbort();
|
||||
}
|
||||
});
|
||||
|
||||
return netJob;
|
||||
}
|
||||
|
||||
Task::Ptr ResourceAPI::getProjectInfo(ProjectInfoArgs&& args, Callback<ModPlatform::IndexedPack::Ptr>&& callbacks, bool askRetry) const
|
||||
Task::Ptr ResourceAPI::getProjectInfo(const ProjectInfoArgs& args,
|
||||
const Callback<ModPlatform::IndexedPack::Ptr>& callbacks,
|
||||
bool askRetry) const
|
||||
{
|
||||
auto [job, response] = getProject(args.pack->addonId.toString(), askRetry);
|
||||
|
||||
QObject::connect(job.get(), &NetJob::succeeded, [this, response, callbacks, args] {
|
||||
auto pack = args.pack;
|
||||
QJsonParseError parse_error{};
|
||||
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
|
||||
if (parse_error.error != QJsonParseError::NoError) {
|
||||
qWarning() << "Error while parsing JSON response for mod info 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 for mod info at" << parseError.offset << "reason:" << parseError.errorString();
|
||||
qWarning() << *response;
|
||||
return;
|
||||
}
|
||||
try {
|
||||
auto obj = Json::requireObject(doc);
|
||||
if (obj.contains("data"))
|
||||
if (obj.contains("data")) {
|
||||
obj = Json::requireObject(obj, "data");
|
||||
}
|
||||
loadIndexedPack(*pack, obj);
|
||||
loadExtraPackInfo(*pack, obj);
|
||||
} catch (const JSONValidationError& e) {
|
||||
qDebug() << doc;
|
||||
qWarning() << "Error while reading" << debugName() << "resource info:" << e.cause();
|
||||
}
|
||||
callbacks.on_succeed(pack);
|
||||
callbacks.onSucceed(pack);
|
||||
});
|
||||
// Capture a weak_ptr instead of a shared_ptr to avoid circular dependency issues.
|
||||
// This prevents the lambda from extending the lifetime of the shared resource,
|
||||
// as it only temporarily locks the resource when needed.
|
||||
auto weak = job.toWeakRef();
|
||||
QObject::connect(job.get(), &NetJob::failed, [weak, callbacks](const QString& reason) {
|
||||
int network_error_code = -1;
|
||||
int networkErrorCode = -1;
|
||||
if (auto job = weak.lock()) {
|
||||
if (auto netJob = qSharedPointerDynamicCast<NetJob>(job)) {
|
||||
if (auto* failed_action = netJob->getFailedActions().at(0); failed_action) {
|
||||
network_error_code = failed_action->replyStatusCode();
|
||||
if (auto* failedAction = netJob->getFailedActions().at(0); failedAction) {
|
||||
networkErrorCode = failedAction->replyStatusCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
callbacks.on_fail(reason, network_error_code);
|
||||
callbacks.onFail(reason, networkErrorCode);
|
||||
});
|
||||
QObject::connect(job.get(), &NetJob::aborted, [callbacks] {
|
||||
if (callbacks.on_abort != nullptr)
|
||||
callbacks.on_abort();
|
||||
if (callbacks.onAbort != nullptr) {
|
||||
callbacks.onAbort();
|
||||
}
|
||||
});
|
||||
return job;
|
||||
}
|
||||
|
||||
Task::Ptr ResourceAPI::getDependencyVersion(DependencySearchArgs&& args, Callback<ModPlatform::IndexedVersion>&& callbacks) const
|
||||
Task::Ptr ResourceAPI::getDependencyVersion(const DependencySearchArgs& args, const Callback<ModPlatform::IndexedVersion>& callbacks) const
|
||||
{
|
||||
auto versions_url_optional = getDependencyURL(args);
|
||||
if (!versions_url_optional.has_value())
|
||||
auto versionsUrlOptional = getDependencyURL(args);
|
||||
if (!versionsUrlOptional.has_value()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto versions_url = versions_url_optional.value();
|
||||
const auto& versionsUrl = versionsUrlOptional.value();
|
||||
|
||||
auto netJob = makeShared<NetJob>(QString("%1::Dependency").arg(args.dependency.addonId.toString()), APPLICATION->network());
|
||||
auto [action, response] = Net::ApiDownload::makeByteArray(versions_url);
|
||||
auto [action, response] = Net::ApiDownload::makeByteArray(versionsUrl);
|
||||
netJob->addNetAction(action);
|
||||
|
||||
QObject::connect(netJob.get(), &NetJob::succeeded, [this, response, callbacks, args] {
|
||||
QJsonParseError parse_error{};
|
||||
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
|
||||
if (parse_error.error != QJsonParseError::NoError) {
|
||||
qWarning() << "Error while parsing JSON response for getting dependency version 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 for getting dependency version at" << parseError.offset
|
||||
<< "reason:" << parseError.errorString();
|
||||
qWarning() << *response;
|
||||
return;
|
||||
}
|
||||
|
|
@ -230,21 +242,23 @@ Task::Ptr ResourceAPI::getDependencyVersion(DependencySearchArgs&& args, Callbac
|
|||
auto obj = versionIter.toObject();
|
||||
|
||||
auto file = loadIndexedPackVersion(obj, ModPlatform::ResourceType::Mod);
|
||||
if (!file.addonId.isValid())
|
||||
if (!file.addonId.isValid()) {
|
||||
file.addonId = args.dependency.addonId;
|
||||
}
|
||||
|
||||
if (file.fileId.isValid() &&
|
||||
(!file.loaders || args.loader & file.loaders)) // Heuristic to check if the returned value is valid
|
||||
(!file.loaders || args.loader & file.loaders)) { // Heuristic to check if the returned value is valid
|
||||
versions.append(file);
|
||||
}
|
||||
}
|
||||
|
||||
auto orderSortPredicate = [](const ModPlatform::IndexedVersion& a, const ModPlatform::IndexedVersion& b) -> bool {
|
||||
// dates are in RFC 3339 format
|
||||
return a.date > b.date;
|
||||
};
|
||||
std::sort(versions.begin(), versions.end(), orderSortPredicate);
|
||||
std::ranges::sort(versions, orderSortPredicate);
|
||||
auto bestMatch = versions.size() != 0 ? versions.front() : ModPlatform::IndexedVersion();
|
||||
callbacks.on_succeed(bestMatch);
|
||||
callbacks.onSucceed(bestMatch);
|
||||
});
|
||||
|
||||
// Capture a weak_ptr instead of a shared_ptr to avoid circular dependency issues.
|
||||
|
|
@ -252,50 +266,52 @@ Task::Ptr ResourceAPI::getDependencyVersion(DependencySearchArgs&& args, Callbac
|
|||
// as it only temporarily locks the resource when needed.
|
||||
auto weak = netJob.toWeakRef();
|
||||
QObject::connect(netJob.get(), &NetJob::failed, [weak, callbacks](const QString& reason) {
|
||||
int network_error_code = -1;
|
||||
int networkErrorCode = -1;
|
||||
if (auto netJob = weak.lock()) {
|
||||
if (auto* failed_action = netJob->getFailedActions().at(0); failed_action)
|
||||
network_error_code = failed_action->replyStatusCode();
|
||||
if (auto* failedAction = netJob->getFailedActions().at(0); failedAction) {
|
||||
networkErrorCode = failedAction->replyStatusCode();
|
||||
}
|
||||
}
|
||||
callbacks.on_fail(reason, network_error_code);
|
||||
callbacks.onFail(reason, networkErrorCode);
|
||||
});
|
||||
return netJob;
|
||||
}
|
||||
|
||||
QString ResourceAPI::getGameVersionsString(std::vector<Version> mcVersions) const
|
||||
QString ResourceAPI::getGameVersionsString(const std::vector<Version>& mcVersions)
|
||||
{
|
||||
QString s;
|
||||
for (auto& ver : mcVersions) {
|
||||
for (const auto& ver : mcVersions) {
|
||||
s += QString("\"%1\",").arg(mapMCVersionToModrinth(ver));
|
||||
}
|
||||
s.remove(s.length() - 1, 1); // remove last comma
|
||||
return s;
|
||||
}
|
||||
|
||||
QString ResourceAPI::mapMCVersionToModrinth(Version v) const
|
||||
QString ResourceAPI::mapMCVersionToModrinth(const Version& v)
|
||||
{
|
||||
static const QString preString = " Pre-Release ";
|
||||
static const QString s_preString = " Pre-Release ";
|
||||
auto verStr = v.toString();
|
||||
|
||||
if (verStr.contains(preString)) {
|
||||
verStr.replace(preString, "-pre");
|
||||
if (verStr.contains(s_preString)) {
|
||||
verStr.replace(s_preString, "-pre");
|
||||
}
|
||||
verStr.replace(" ", "-");
|
||||
return verStr;
|
||||
}
|
||||
|
||||
std::pair<Task::Ptr, QByteArray*> ResourceAPI::getProject(QString addonId, bool askRetry) const
|
||||
std::pair<Task::Ptr, QByteArray*> ResourceAPI::getProject(const QString& addonId, bool askRetry) const
|
||||
{
|
||||
auto project_url_optional = getInfoURL(addonId);
|
||||
if (!project_url_optional.has_value())
|
||||
auto projectUrlOptional = getInfoURL(addonId);
|
||||
if (!projectUrlOptional.has_value()) {
|
||||
return { nullptr, nullptr };
|
||||
}
|
||||
|
||||
auto project_url = project_url_optional.value();
|
||||
const auto& projectUrl = projectUrlOptional.value();
|
||||
|
||||
auto netJob = makeShared<NetJob>(QString("%1::GetProject").arg(addonId), APPLICATION->network());
|
||||
netJob->setAskRetry(askRetry);
|
||||
|
||||
auto [action, response] = Net::ApiDownload::makeByteArray(QUrl(project_url));
|
||||
auto [action, response] = Net::ApiDownload::makeByteArray(QUrl(projectUrl));
|
||||
netJob->addNetAction(action);
|
||||
|
||||
return { netJob, response };
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue