From 2a6b757e3771a67e58b15ff6df6153fe3068b76a Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Sat, 5 Oct 2024 00:49:52 -0300 Subject: [PATCH] feat: get achievement from game directory on launch --- .../update-local-unlocked-achivements.ts | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/main/services/achievements/update-local-unlocked-achivements.ts b/src/main/services/achievements/update-local-unlocked-achivements.ts index 4d21a603..e2defc35 100644 --- a/src/main/services/achievements/update-local-unlocked-achivements.ts +++ b/src/main/services/achievements/update-local-unlocked-achivements.ts @@ -2,6 +2,7 @@ import { gameAchievementRepository, gameRepository } from "@main/repository"; import { findAllAchievementFiles, findAchievementFiles, + findAchievementFileInExecutableDirectory, } from "./find-achivement-files"; import { parseAchievementFile } from "./parse-achievement-file"; import { mergeAchievements } from "./merge-achievements"; @@ -12,26 +13,30 @@ import { achievementsLogger } from "../logger"; export const updateAllLocalUnlockedAchievements = async () => { const gameAchievementFilesMap = await findAllAchievementFiles(); - for (const objectId of gameAchievementFilesMap.keys()) { - const gameAchievementFiles = gameAchievementFilesMap.get(objectId)!; + const games = await gameRepository.find({ + where: { + isDeleted: false, + }, + }); - const [game, localAchievements] = await Promise.all([ - gameRepository.findOne({ - where: { objectID: objectId, shop: "steam", isDeleted: false }, - }), - gameAchievementRepository.findOne({ - where: { objectId, shop: "steam" }, - }), - ]); + for (const game of games) { + const gameAchievementFiles = + gameAchievementFilesMap.get(game.objectID) || []; + const achievementFileInsideDirectory = + findAchievementFileInExecutableDirectory(game); - if (!game) continue; + gameAchievementFiles.push(...achievementFileInsideDirectory); + + const localAchievements = await gameAchievementRepository.findOne({ + where: { objectId: game.objectID, shop: "steam" }, + }); if (!localAchievements || !localAchievements.achievements) { - await getGameAchievementData(objectId, "steam") + await getGameAchievementData(game.objectID, "steam") .then((achievements) => { return gameAchievementRepository.upsert( { - objectId, + objectId: game.objectID, shop: "steam", achievements: JSON.stringify(achievements), }, @@ -60,7 +65,7 @@ export const updateAllLocalUnlockedAchievements = async () => { ); } - mergeAchievements(objectId, "steam", unlockedAchievements, false); + mergeAchievements(game.objectID, "steam", unlockedAchievements, false); } }; @@ -78,6 +83,11 @@ export const updateLocalUnlockedAchivements = async (objectId: string) => { const gameAchievementFiles = await findAchievementFiles(game); + const achievementFileInsideDirectory = + findAchievementFileInExecutableDirectory(game); + + gameAchievementFiles.push(...achievementFileInsideDirectory); + console.log("Achievements files for", game.title, gameAchievementFiles); if (!localAchievements || !localAchievements.achievements) {