aboutsummaryrefslogtreecommitdiff
path: root/launcher/modplatform/flame
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-06-04 16:22:46 -0300
committerflow <flowlnlnln@gmail.com>2022-07-17 11:33:42 -0300
commit6e2869834f59ae4863e63a16de97aa3019723b26 (patch)
treed92e2a0d324c0a328e92c59a6146ae07d7920b1d /launcher/modplatform/flame
parentb8b71c7dd29fbdc6c98d60ec54c57cff74f4cbfd (diff)
downloadPrismLauncher-6e2869834f59ae4863e63a16de97aa3019723b26.tar.gz
PrismLauncher-6e2869834f59ae4863e63a16de97aa3019723b26.tar.bz2
PrismLauncher-6e2869834f59ae4863e63a16de97aa3019723b26.zip
feat: add mod update dialog
This subclasses the Review mods dialog to make a "Update review" one. Also, all the necessary components built until now are put together in a coherent unity that checks and generates metadata on-the-fly and checks for mod updates, while giving and receiving feedback to the user. Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/modplatform/flame')
-rw-r--r--launcher/modplatform/flame/FlameCheckUpdate.cpp19
1 files changed, 5 insertions, 14 deletions
diff --git a/launcher/modplatform/flame/FlameCheckUpdate.cpp b/launcher/modplatform/flame/FlameCheckUpdate.cpp
index f1983fa4..12d99029 100644
--- a/launcher/modplatform/flame/FlameCheckUpdate.cpp
+++ b/launcher/modplatform/flame/FlameCheckUpdate.cpp
@@ -74,16 +74,13 @@ void FlameCheckUpdate::executeTask()
setStatus(tr("Preparing mods for CurseForge..."));
setProgress(0, 5);
- QHash<QString, Mod> mappings;
+ QHash<int, Mod> mappings;
// Create all hashes
- QStringList hashes;
std::list<uint> murmur_hashes;
auto best_hash_type = ProviderCaps.hashType(ModPlatform::Provider::FLAME).first();
for (auto mod : m_mods) {
- auto hash = mod.metadata()->hash;
-
QByteArray jar_data;
try {
@@ -106,14 +103,7 @@ void FlameCheckUpdate::executeTask()
auto murmur_hash = MurmurHash2(jar_data_treated, jar_data_treated.length());
murmur_hashes.emplace_back(murmur_hash);
- // Sadly the API can only handle one hash type per call, se we
- // need to generate a new hash if the current one is innadequate
- // (though it will rarely happen, if at all)
- if (mod.metadata()->hash_format != best_hash_type)
- hash = QString(ProviderCaps.hash(ModPlatform::Provider::FLAME, jar_data, best_hash_type).toHex());
-
- hashes.append(hash);
- mappings.insert(hash, mod);
+ mappings.insert(mod.metadata()->mod_id().toInt(), mod);
}
auto* response = new QByteArray();
@@ -154,9 +144,10 @@ void FlameCheckUpdate::executeTask()
return;
}
- auto mod_iter = mappings.find(current_ver.hash);
+ auto mod_iter = mappings.find(current_ver.addonId.toInt());
if (mod_iter == mappings.end()) {
qCritical() << "Failed to remap mod from Flame!";
+ qDebug() << match_obj;
continue;
}
@@ -191,7 +182,7 @@ void FlameCheckUpdate::executeTask()
continue;
}
- if (!latest_ver.hash.isEmpty() && current_ver.hash != latest_ver.hash) {
+ if (!latest_ver.hash.isEmpty() && (current_ver.hash != latest_ver.hash || mod.status() == ModStatus::NotInstalled)) {
// Fake pack with the necessary info to pass to the download task :)
ModPlatform::IndexedPack pack;
pack.name = mod.name();