From b8b000d88ca5a7990bfdeda05492891a59ca2760 Mon Sep 17 00:00:00 2001 From: JackEnx <167036558+JackEnx@users.noreply.github.com> Date: Mon, 16 Dec 2024 14:36:16 -0300 Subject: [PATCH] refactor: change game process set to map --- src/main/services/process-watcher.ts | 30 +++++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/main/services/process-watcher.ts b/src/main/services/process-watcher.ts index fd9bb148..ce9d060b 100644 --- a/src/main/services/process-watcher.ts +++ b/src/main/services/process-watcher.ts @@ -14,18 +14,24 @@ export const gamesPlaytime = new Map< const TICKS_TO_UPDATE_API = 120; let currentTick = 1; -const getSystemProcessSet = async () => { +const getSystemProcessMap = async () => { const processes = await PythonInstance.getProcessList(); - if (process.platform === "linux") - return new Set(processes.map((process) => process.name)); - return new Set(processes.map((process) => process.exe)); + const map = new Map>(); + + processes.forEach((process) => { + const [key, value] = [process.name?.toLowerCase(), process.exe]; + + if (!key || !value) return; + + map.set(key, (map.get(key) ?? new Set()).add(value)); + }); + + return map; }; -const getExecutable = (game: Game) => { - if (process.platform === "linux") - return game.executablePath?.split("/").at(-1); - return game.executablePath; +const getExecutable = (path: string) => { + return path.slice(path.lastIndexOf("/") + 1); }; export const watchProcesses = async () => { @@ -38,14 +44,14 @@ export const watchProcesses = async () => { if (games.length === 0) return; - const processSet = await getSystemProcessSet(); + const processMap = await getSystemProcessMap(); for (const game of games) { - const executable = getExecutable(game); + if (!game.executablePath) continue; - if (!executable) continue; + const executable = getExecutable(game.executablePath); - const gameProcess = processSet.has(executable); + const gameProcess = processMap.get(executable)?.has(game.executablePath); if (gameProcess) { if (gamesPlaytime.has(game.id)) {