diff --git a/src/main/events/index.ts b/src/main/events/index.ts index 190fd56b..548106e0 100644 --- a/src/main/events/index.ts +++ b/src/main/events/index.ts @@ -22,6 +22,7 @@ import "./library/open-game-installer-path"; import "./library/update-executable-path"; import "./library/remove-game"; import "./library/remove-game-from-library"; +import "./misc/is-user-logged-in"; import "./misc/open-external"; import "./misc/show-open-dialog"; import "./torrenting/cancel-game-download"; diff --git a/src/main/events/misc/is-user-logged-in.ts b/src/main/events/misc/is-user-logged-in.ts new file mode 100644 index 00000000..d1874b01 --- /dev/null +++ b/src/main/events/misc/is-user-logged-in.ts @@ -0,0 +1,8 @@ +import { registerEvent } from "../register-event"; +import { HydraApi } from "@main/services/hydra-api"; + +const isUserLoggedIn = async (_event: Electron.IpcMainInvokeEvent) => { + return HydraApi.isLoggedIn(); +}; + +registerEvent("isUserLoggedIn", isUserLoggedIn); diff --git a/src/main/services/hydra-api.ts b/src/main/services/hydra-api.ts index 7a69aa24..f8361260 100644 --- a/src/main/services/hydra-api.ts +++ b/src/main/services/hydra-api.ts @@ -14,6 +14,10 @@ export class HydraApi { expirationTimestamp: 0, }; + static isLoggedIn() { + return this.userAuth.authToken !== ""; + } + static async handleExternalAuth(auth: string) { const { payload } = url.parse(auth, true).query; diff --git a/src/preload/index.ts b/src/preload/index.ts index 607c0fb0..1fe259c8 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -106,6 +106,7 @@ contextBridge.exposeInMainWorld("electron", { getVersion: () => ipcRenderer.invoke("getVersion"), getDefaultDownloadsPath: () => ipcRenderer.invoke("getDefaultDownloadsPath"), openExternal: (src: string) => ipcRenderer.invoke("openExternal", src), + isUserLoggedIn: () => ipcRenderer.invoke("isUserLoggedIn"), showOpenDialog: (options: Electron.OpenDialogOptions) => ipcRenderer.invoke("showOpenDialog", options), platform: process.platform, diff --git a/src/renderer/src/app.tsx b/src/renderer/src/app.tsx index e038d557..71065545 100644 --- a/src/renderer/src/app.tsx +++ b/src/renderer/src/app.tsx @@ -86,9 +86,12 @@ export function App() { dispatch(setProfileBackground(profileBackground)); } - /* TODO: Check if user is logged in before calling this */ - fetchUserDetails().then((response) => { - if (response) setUserDetails(response); + window.electron.isUserLoggedIn().then((isLoggedIn) => { + if (isLoggedIn) { + fetchUserDetails().then((response) => { + if (response) setUserDetails(response); + }); + } }); }, [dispatch, fetchUserDetails]); diff --git a/src/renderer/src/declaration.d.ts b/src/renderer/src/declaration.d.ts index 01b290a3..968a7a72 100644 --- a/src/renderer/src/declaration.d.ts +++ b/src/renderer/src/declaration.d.ts @@ -96,6 +96,7 @@ declare global { /* Misc */ openExternal: (src: string) => Promise; + isUserLoggedIn: () => Promise; getVersion: () => Promise; ping: () => string; getDefaultDownloadsPath: () => Promise;