diff --git a/src/main/index.ts b/src/main/index.ts index abe3b17a..17eacd97 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -143,9 +143,17 @@ app.on("window-all-closed", () => { WindowManager.mainWindow = null; }); -app.on("before-quit", () => { - /* Disconnects libtorrent */ - PythonRPC.kill(); +let canAppBeClose = false; + +app.on("before-quit", async (e) => { + if (!canAppBeClose) { + e.preventDefault(); + /* Disconnects libtorrent */ + PythonRPC.kill(); + await clearGamesPlaytime(); + canAppBeClose = true; + app.quit(); + } }); app.on("activate", () => { diff --git a/src/main/services/process-watcher.ts b/src/main/services/process-watcher.ts index cacc6734..deb93f4e 100644 --- a/src/main/services/process-watcher.ts +++ b/src/main/services/process-watcher.ts @@ -340,3 +340,15 @@ const onCloseGame = (game: Game) => { return createGame(game).catch(() => {}); } }; + +export const clearGamesPlaytime = async () => { + for (const game of gamesPlaytime.keys()) { + const gameData = await gamesSublevel.get(game); + + if (gameData) { + await onCloseGame(gameData); + } + } + + gamesPlaytime.clear(); +};