fix:resource update with loaders

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97
2024-11-16 00:54:36 +02:00
parent a75713897d
commit bd570aa5d1
5 changed files with 63 additions and 23 deletions

View File

@@ -218,9 +218,19 @@ QList<ModPlatform::Category> FlameAPI::loadModCategories(std::shared_ptr<QByteAr
std::optional<ModPlatform::IndexedVersion> FlameAPI::getLatestVersion(QList<ModPlatform::IndexedVersion> versions,
QList<ModPlatform::ModLoaderType> instanceLoaders,
ModPlatform::ModLoaderTypes modLoaders)
ModPlatform::ModLoaderTypes modLoaders,
bool checkLoaders)
{
static const auto 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;
}
}
return ver;
}
QHash<ModPlatform::ModLoaderType, ModPlatform::IndexedVersion> bestMatch;
auto checkVersion = [&bestMatch](const ModPlatform::IndexedVersion& version, const ModPlatform::ModLoaderType& loader) {
if (bestMatch.contains(loader)) {

View File

@@ -18,7 +18,8 @@ class FlameAPI : public NetworkResourceAPI {
std::optional<ModPlatform::IndexedVersion> getLatestVersion(QList<ModPlatform::IndexedVersion> versions,
QList<ModPlatform::ModLoaderType> instanceLoaders,
ModPlatform::ModLoaderTypes fallback);
ModPlatform::ModLoaderTypes fallback,
bool checkLoaders);
Task::Ptr getProjects(QStringList addonIds, std::shared_ptr<QByteArray> response) const override;
Task::Ptr matchFingerprints(const QList<uint>& fingerprints, std::shared_ptr<QByteArray> response);

View File

@@ -87,7 +87,7 @@ void FlameCheckUpdate::getLatestVersionCallback(Resource* resource, std::shared_
qCritical() << e.what();
qDebug() << doc;
}
auto latest_ver = api.getLatestVersion(pack->versions, m_loadersList, resource->metadata()->loaders);
auto latest_ver = api.getLatestVersion(pack->versions, m_loadersList, resource->metadata()->loaders, !m_loadersList.isEmpty());
setStatus(tr("Parsing the API response from CurseForge for '%1'...").arg(resource->name()));