From a2ffac9424fa9a7a0c748444f293d2c83b277af1 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Tue, 20 Feb 2024 00:10:05 +0100 Subject: [PATCH] impr: Reorder achievement save routine to never accidentally clear the file --- .../source/api/achievement_manager.cpp | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/libimhex/source/api/achievement_manager.cpp b/lib/libimhex/source/api/achievement_manager.cpp index 09fe516df..42e094ae9 100644 --- a/lib/libimhex/source/api/achievement_manager.cpp +++ b/lib/libimhex/source/api/achievement_manager.cpp @@ -234,26 +234,26 @@ namespace hex { } void AchievementManager::storeProgress() { + nlohmann::json json; + for (const auto &[categoryName, achievements] : getAchievements()) { + json[categoryName] = nlohmann::json::object(); + + for (const auto &[achievementName, achievement] : achievements) { + json[categoryName][achievementName] = achievement->getProgress(); + } + } + + if (json.empty()) + return; + for (const auto &directory : fs::getDefaultPaths(fs::ImHexPath::Config)) { auto path = directory / AchievementsFile; wolv::io::File file(path, wolv::io::File::Mode::Create); - if (!file.isValid()) { + if (!file.isValid()) continue; - } - nlohmann::json json; - - for (const auto &[categoryName, achievements] : getAchievements()) { - json[categoryName] = nlohmann::json::object(); - - for (const auto &[achievementName, achievement] : achievements) { - json[categoryName][achievementName] = achievement->getProgress(); - } - } - - const auto result = json.dump(4); - file.writeString(result); + file.writeString(json.dump(4)); break; } }