fix: implement PR suggestions
Some stylistic changes, and get hashes from the mod providers when building the metadata.
This commit is contained in:
		@@ -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", "");
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -345,7 +345,7 @@ void LauncherPage::applySettings()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Mods
 | 
			
		||||
    s->set("DontUseModMetadata", ui->metadataDisableBtn->isChecked());
 | 
			
		||||
    s->set("ModMetadataDisabled", ui->metadataDisableBtn->isChecked());
 | 
			
		||||
}
 | 
			
		||||
void LauncherPage::loadSettings()
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user