From f6ce6eddb8ef2b59abc84d9568b91f26f520c7ac Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Tue, 1 Oct 2024 10:50:30 -0300 Subject: [PATCH] feat: logs --- .../find-steam-game-achivement-files.ts | 12 +++++++++- .../game-achievements-observer.ts | 22 ++++++++++++------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/main/services/achievements/find-steam-game-achivement-files.ts b/src/main/services/achievements/find-steam-game-achivement-files.ts index fdc21184..e81596b0 100644 --- a/src/main/services/achievements/find-steam-game-achivement-files.ts +++ b/src/main/services/achievements/find-steam-game-achivement-files.ts @@ -23,6 +23,14 @@ const addGame = ( : achievementFiles.set(objectId, [achivementFile]); }; +const getObjectIdsInFolder = (path: string) => { + if (fs.existsSync(path)) { + return fs.readdirSync(path); + } + + return []; +}; + export const findSteamGameAchievementFiles = (objectId?: string) => { //TODO: change to a automatized method const publicDir = path.join("C:", "Users", "Public", "Documents"); @@ -52,7 +60,9 @@ export const findSteamGameAchievementFiles = (objectId?: string) => { fileLocation = ["achievements.ini"]; } - const objectIds = objectId ? [objectId] : fs.readdirSync(achievementPath); + const objectIds = objectId + ? [objectId] + : getObjectIdsInFolder(achievementPath); for (const objectId of objectIds) { addGame( diff --git a/src/main/services/achievements/game-achievements-observer.ts b/src/main/services/achievements/game-achievements-observer.ts index f6453a6d..ae040b62 100644 --- a/src/main/services/achievements/game-achievements-observer.ts +++ b/src/main/services/achievements/game-achievements-observer.ts @@ -6,6 +6,7 @@ import { mergeAchievements } from "./merge-achievements"; import fs from "node:fs"; import { findSteamGameAchievementFiles } from "./find-steam-game-achivement-files"; import type { AchievementFile } from "@types"; +import { logger } from "../logger"; type GameAchievementObserver = { [id: number]: AbortController; @@ -15,17 +16,22 @@ const gameAchievementObserver: GameAchievementObserver = {}; const processAchievementFile = async (game: Game, file: AchievementFile) => { const localAchievementFile = await parseAchievementFile(file.filePath); - console.log(localAchievementFile); + logger.log("Parsed achievements file", file.filePath, localAchievementFile); if (localAchievementFile) { const unlockedAchievements = checkUnlockedAchievements( file.type, localAchievementFile ); - console.log(unlockedAchievements); + logger.log("Achievements from file", file.filePath, unlockedAchievements); if (unlockedAchievements.length) { - mergeAchievements(game.objectID, game.shop, unlockedAchievements, true); + return mergeAchievements( + game.objectID, + game.shop, + unlockedAchievements, + true + ); } } }; @@ -34,7 +40,7 @@ const startFileWatch = async (game: Game, file: AchievementFile) => { const signal = gameAchievementObserver[game.id]?.signal; try { - processAchievementFile(game, file); + await processAchievementFile(game, file); const watcher = watch(file.filePath, { signal, @@ -42,13 +48,13 @@ const startFileWatch = async (game: Game, file: AchievementFile) => { for await (const event of watcher) { if (event.eventType === "change") { - processAchievementFile(game, file); + logger.log("Detected change in file", file.filePath); + await processAchievementFile(game, file); } } } catch (err: any) { if (err?.name === "AbortError") return; - console.log(`cracker: ${file.type}, steamId ${game.objectID}`); - throw err; + logger.error("Failed to watch file", file.filePath, err); } }; @@ -59,7 +65,7 @@ export const startGameAchievementObserver = async (game: Game) => { const achievementFiles = findSteamGameAchievementFiles(game.objectID).get(game.objectID) || []; - console.log( + logger.log( "Achievements files to observe for:", game.title, achievementFiles