From 2ed18996df00d7d07a4d7030b17b8bb49219d502 Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Mon, 3 Feb 2025 17:41:34 -0300 Subject: [PATCH] fix: not saving unlocked achievements correctly --- .../events/library/add-game-to-library.ts | 6 ++-- .../events/user/get-unlocked-achievements.ts | 6 ++-- .../achievements/merge-achievements.ts | 30 +++++++++---------- .../update-local-unlocked-achivements.ts | 2 +- .../library-sync/merge-with-remote-games.ts | 4 +-- 5 files changed, 23 insertions(+), 25 deletions(-) diff --git a/src/main/events/library/add-game-to-library.ts b/src/main/events/library/add-game-to-library.ts index 62993348..c59f6ac8 100644 --- a/src/main/events/library/add-game-to-library.ts +++ b/src/main/events/library/add-game-to-library.ts @@ -5,7 +5,7 @@ import type { Game, GameShop } from "@types"; import { steamGamesWorker } from "@main/workers"; import { createGame } from "@main/services/library-sync"; import { steamUrlBuilder } from "@shared"; -import { updateLocalUnlockedAchivements } from "@main/services/achievements/update-local-unlocked-achivements"; +import { updateLocalUnlockedAchievements } from "@main/services/achievements/update-local-unlocked-achivements"; import { downloadsSublevel, gamesSublevel, levelKeys } from "@main/level"; const addGameToLibrary = async ( @@ -46,9 +46,9 @@ const addGameToLibrary = async ( await gamesSublevel.put(levelKeys.game(shop, objectId), game); - updateLocalUnlockedAchivements(game); + await createGame(game).catch(() => {}); - createGame(game).catch(() => {}); + updateLocalUnlockedAchievements(game); } }; diff --git a/src/main/events/user/get-unlocked-achievements.ts b/src/main/events/user/get-unlocked-achievements.ts index 6deecbad..21aad7a0 100644 --- a/src/main/events/user/get-unlocked-achievements.ts +++ b/src/main/events/user/get-unlocked-achievements.ts @@ -32,7 +32,7 @@ export const getUnlockedAchievements = async ( return achievementsData .map((achievementData) => { - const unlockedAchiementData = unlockedAchievements.find( + const unlockedAchievementData = unlockedAchievements.find( (localAchievement) => { return ( localAchievement.name.toUpperCase() == @@ -45,11 +45,11 @@ export const getUnlockedAchievements = async ( ? achievementData.icon : achievementData.icongray; - if (unlockedAchiementData) { + if (unlockedAchievementData) { return { ...achievementData, unlocked: true, - unlockTime: unlockedAchiementData.unlockTime, + unlockTime: unlockedAchievementData.unlockTime, }; } diff --git a/src/main/services/achievements/merge-achievements.ts b/src/main/services/achievements/merge-achievements.ts index 7e6ebf0a..e173af27 100644 --- a/src/main/services/achievements/merge-achievements.ts +++ b/src/main/services/achievements/merge-achievements.ts @@ -23,23 +23,21 @@ const saveAchievementsOnLocal = async ( return gameAchievementsSublevel .get(levelKey) .then(async (gameAchievement) => { - if (gameAchievement) { - await gameAchievementsSublevel.put(levelKey, { - ...gameAchievement, - unlockedAchievements: unlockedAchievements, - }); + await gameAchievementsSublevel.put(levelKey, { + achievements: gameAchievement?.achievements ?? [], + unlockedAchievements: unlockedAchievements, + }); - if (!sendUpdateEvent) return; + if (!sendUpdateEvent) return; - return getUnlockedAchievements(objectId, shop, true) - .then((achievements) => { - WindowManager.mainWindow?.webContents.send( - `on-update-achievements-${objectId}-${shop}`, - achievements - ); - }) - .catch(() => {}); - } + return getUnlockedAchievements(objectId, shop, true) + .then((achievements) => { + WindowManager.mainWindow?.webContents.send( + `on-update-achievements-${objectId}-${shop}`, + achievements + ); + }) + .catch(() => {}); }); }; @@ -133,7 +131,7 @@ export const mergeAchievements = async ( ); }) .catch((err) => { - if (err! instanceof SubscriptionRequiredError) { + if (err instanceof SubscriptionRequiredError) { achievementsLogger.log( "Achievements not synchronized on API due to lack of subscription", game.objectId, diff --git a/src/main/services/achievements/update-local-unlocked-achivements.ts b/src/main/services/achievements/update-local-unlocked-achivements.ts index 8832a475..44f2693a 100644 --- a/src/main/services/achievements/update-local-unlocked-achivements.ts +++ b/src/main/services/achievements/update-local-unlocked-achivements.ts @@ -6,7 +6,7 @@ import { parseAchievementFile } from "./parse-achievement-file"; import { mergeAchievements } from "./merge-achievements"; import type { Game, UnlockedAchievement } from "@types"; -export const updateLocalUnlockedAchivements = async (game: Game) => { +export const updateLocalUnlockedAchievements = async (game: Game) => { const gameAchievementFiles = findAchievementFiles(game); const achievementFileInsideDirectory = diff --git a/src/main/services/library-sync/merge-with-remote-games.ts b/src/main/services/library-sync/merge-with-remote-games.ts index c3f57c53..f98fb0d3 100644 --- a/src/main/services/library-sync/merge-with-remote-games.ts +++ b/src/main/services/library-sync/merge-with-remote-games.ts @@ -24,7 +24,7 @@ export const mergeWithRemoteGames = async () => { ? game.playTimeInMilliseconds : localGame.playTimeInMilliseconds; - gamesSublevel.put(levelKeys.game(game.shop, game.objectId), { + await gamesSublevel.put(levelKeys.game(game.shop, game.objectId), { ...localGame, remoteId: game.id, lastTimePlayed: updatedLastTimePlayed, @@ -39,7 +39,7 @@ export const mergeWithRemoteGames = async () => { ? steamUrlBuilder.icon(game.objectId, steamGame.clientIcon) : null; - gamesSublevel.put(levelKeys.game(game.shop, game.objectId), { + await gamesSublevel.put(levelKeys.game(game.shop, game.objectId), { objectId: game.objectId, title: steamGame?.name, remoteId: game.id,