From 7be626b3dd2dbe2f51d2ec9661abf679537b2698 Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Thu, 27 Jun 2024 18:05:07 -0300 Subject: [PATCH 1/2] feat: make it possible to select shortcuts (.lnk) --- src/main/events/helpers/parse-executable-path.ts | 10 ++++++++++ src/main/events/library/open-game.ts | 7 +++++-- src/main/events/library/update-executable-path.ts | 3 ++- src/main/helpers/ps.ts | 10 +++++++++- .../src/context/game-details/game-details.context.tsx | 2 +- 5 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 src/main/events/helpers/parse-executable-path.ts diff --git a/src/main/events/helpers/parse-executable-path.ts b/src/main/events/helpers/parse-executable-path.ts new file mode 100644 index 00000000..184a32ca --- /dev/null +++ b/src/main/events/helpers/parse-executable-path.ts @@ -0,0 +1,10 @@ +import { shell } from "electron"; + +export const parseExecutablePath = (path: string) => { + if (process.platform === "win32" && path.endsWith(".lnk")) { + const { target } = shell.readShortcutLink(path); + + return target; + } + return path; +}; diff --git a/src/main/events/library/open-game.ts b/src/main/events/library/open-game.ts index d838ce0c..de68cc53 100644 --- a/src/main/events/library/open-game.ts +++ b/src/main/events/library/open-game.ts @@ -2,15 +2,18 @@ import { gameRepository } from "@main/repository"; import { registerEvent } from "../register-event"; import { shell } from "electron"; +import { parseExecutablePath } from "../helpers/parse-executable-path"; const openGame = async ( _event: Electron.IpcMainInvokeEvent, gameId: number, executablePath: string ) => { - await gameRepository.update({ id: gameId }, { executablePath }); + const parsedPath = parseExecutablePath(executablePath); - shell.openPath(executablePath); + await gameRepository.update({ id: gameId }, { executablePath: parsedPath }); + + shell.openPath(parsedPath); }; registerEvent("openGame", openGame); diff --git a/src/main/events/library/update-executable-path.ts b/src/main/events/library/update-executable-path.ts index 6546e8b9..9be36ab1 100644 --- a/src/main/events/library/update-executable-path.ts +++ b/src/main/events/library/update-executable-path.ts @@ -1,6 +1,7 @@ import { gameRepository } from "@main/repository"; import { registerEvent } from "../register-event"; +import { parseExecutablePath } from "../helpers/parse-executable-path"; const updateExecutablePath = async ( _event: Electron.IpcMainInvokeEvent, @@ -12,7 +13,7 @@ const updateExecutablePath = async ( id, }, { - executablePath, + executablePath: parseExecutablePath(executablePath), } ); }; diff --git a/src/main/helpers/ps.ts b/src/main/helpers/ps.ts index 380b5116..5b326dfa 100644 --- a/src/main/helpers/ps.ts +++ b/src/main/helpers/ps.ts @@ -11,7 +11,15 @@ export const getProcesses = async () => { if (process.platform == "win32") { const binaryPath = app.isPackaged ? path.join(process.resourcesPath, "fastlist.exe") - : path.join(__dirname, "..", "..", "fastlist.exe"); + : path.join( + __dirname, + "..", + "..", + "node_modules", + "ps-list", + "vendor", + "fastlist-0.3.0-x64.exe" + ); const { stdout } = await execFile(binaryPath, { maxBuffer: TEN_MEGABYTES, diff --git a/src/renderer/src/context/game-details/game-details.context.tsx b/src/renderer/src/context/game-details/game-details.context.tsx index 19d2cc72..fd3e4600 100644 --- a/src/renderer/src/context/game-details/game-details.context.tsx +++ b/src/renderer/src/context/game-details/game-details.context.tsx @@ -140,7 +140,7 @@ export function GameDetailsContextProvider({ filters: [ { name: "Game executable", - extensions: ["exe"], + extensions: ["exe", "lnk"], }, ], }) From a3f7d3c59efb4d5f86ca1330e9cf3711dde79fb9 Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Thu, 27 Jun 2024 19:05:08 -0300 Subject: [PATCH 2/2] fix: send signout event when auth token is empty --- src/main/services/hydra-api.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/services/hydra-api.ts b/src/main/services/hydra-api.ts index e6e042db..e5a34cb5 100644 --- a/src/main/services/hydra-api.ts +++ b/src/main/services/hydra-api.ts @@ -106,10 +106,17 @@ export class HydraApi { }; } + private static sendSignOutEvent() { + if (WindowManager.mainWindow) { + WindowManager.mainWindow.webContents.send("on-signout"); + } + } + private static async revalidateAccessTokenIfExpired() { if (!this.userAuth.authToken) { userAuthRepository.delete({ id: 1 }); logger.error("user is not logged in"); + this.sendSignOutEvent(); throw new Error("user is not logged in"); } @@ -151,9 +158,7 @@ export class HydraApi { userAuthRepository.delete({ id: 1 }); - if (WindowManager.mainWindow) { - WindowManager.mainWindow.webContents.send("on-signout"); - } + this.sendSignOutEvent(); logger.log("user refresh token expired"); }