fix: implement PR suggestions

Some stylistic changes, and get hashes from the mod providers when
building the metadata.
This commit is contained in:
flow 2022-04-21 15:45:20 -03:00 committed by flow
parent 96e36f0604
commit e17b6804a7
No known key found for this signature in database
GPG Key ID: 8D0F221F0A59F469
7 changed files with 20 additions and 12 deletions

View File

@ -644,7 +644,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
m_settings->registerSetting("MCLaunchMethod", "LauncherPart");
// Minecraft mods
m_settings->registerSetting("DontUseModMetadata", false);
m_settings->registerSetting("ModMetadataDisabled", false);
// Minecraft offline player name
m_settings->registerSetting("LastOfflinePlayerName", "");

View File

@ -10,7 +10,7 @@ ModFolderLoadTask::ModFolderLoadTask(QDir& mods_dir, QDir& index_dir)
void ModFolderLoadTask::run()
{
if (!APPLICATION->settings()->get("DontUseModMetadata").toBool()) {
if (!APPLICATION->settings()->get("ModMetadataDisabled").toBool()) {
// Read metadata first
getFromMetadata();
}
@ -34,14 +34,9 @@ void ModFolderLoadTask::run()
void ModFolderLoadTask::getFromMetadata()
{
m_index_dir.refresh();
for (auto entry : m_index_dir.entryList()) {
// QDir::Filter::NoDotAndDotDot seems to exclude all files for some reason...
if (entry == "." || entry == "..")
continue;
for (auto entry : m_index_dir.entryList(QDir::Files)) {
auto metadata = Metadata::get(m_index_dir, entry);
// TODO: Don't simply return. Instead, show to the user that the metadata is there, but
// it's not currently 'installed' (i.e. there's no JAR file yet).
if(!metadata.isValid()){
return;
}

View File

@ -8,7 +8,7 @@
namespace ModPlatform {
enum class Provider{
enum class Provider {
MODRINTH,
FLAME
};
@ -33,6 +33,7 @@ struct IndexedVersion {
QString date;
QString fileName;
QVector<QString> loaders = {};
QString hash;
};
struct IndexedPack {

View File

@ -6,6 +6,8 @@
#include "modplatform/flame/FlameAPI.h"
#include "net/NetJob.h"
static ModPlatform::ProviderCapabilities ProviderCaps;
void FlameMod::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
{
pack.addonId = Json::requireInteger(obj, "id");
@ -60,6 +62,12 @@ void FlameMod::loadIndexedPackVersions(ModPlatform::IndexedPack& pack,
file.downloadUrl = Json::requireString(obj, "downloadUrl");
file.fileName = Json::requireString(obj, "fileName");
auto hash_list = Json::ensureArray(obj, "hashes");
if(!hash_list.isEmpty()){
if(hash_list.contains(ProviderCaps.hashType(ModPlatform::Provider::FLAME)))
file.hash = Json::requireString(hash_list, "value");
}
unsortedVersions.append(file);
}

View File

@ -24,6 +24,7 @@
#include "net/NetJob.h"
static ModrinthAPI api;
static ModPlatform::ProviderCapabilities ProviderCaps;
void Modrinth::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
{
@ -95,6 +96,9 @@ void Modrinth::loadIndexedPackVersions(ModPlatform::IndexedPack& pack,
if (parent.contains("url")) {
file.downloadUrl = Json::requireString(parent, "url");
file.fileName = Json::requireString(parent, "filename");
auto hash_list = Json::requireObject(parent, "hashes");
if(hash_list.contains(ProviderCaps.hashType(ModPlatform::Provider::MODRINTH)))
file.hash = Json::requireString(hash_list, ProviderCaps.hashType(ModPlatform::Provider::MODRINTH));
unsortedVersions.append(file);
}

View File

@ -30,7 +30,7 @@ auto V1::createModFormat(QDir& index_dir, ModPlatform::IndexedPack& mod_pack, Mo
mod.url = mod_version.downloadUrl;
mod.hash_format = ProviderCaps.hashType(mod_pack.provider);
mod.hash = ""; // FIXME
mod.hash = mod_version.hash;
mod.provider = mod_pack.provider;
mod.file_id = mod_pack.addonId;

View File

@ -345,7 +345,7 @@ void LauncherPage::applySettings()
}
// Mods
s->set("DontUseModMetadata", ui->metadataDisableBtn->isChecked());
s->set("ModMetadataDisabled", ui->metadataDisableBtn->isChecked());
}
void LauncherPage::loadSettings()
{