(
return
;
}
);
+
+AsyncImage.displayName = "AsyncImage";
diff --git a/src/renderer/components/bottom-panel/bottom-panel.css.ts b/src/renderer/src/components/bottom-panel/bottom-panel.css.ts
similarity index 100%
rename from src/renderer/components/bottom-panel/bottom-panel.css.ts
rename to src/renderer/src/components/bottom-panel/bottom-panel.css.ts
diff --git a/src/renderer/components/bottom-panel/bottom-panel.tsx b/src/renderer/src/components/bottom-panel/bottom-panel.tsx
similarity index 93%
rename from src/renderer/components/bottom-panel/bottom-panel.tsx
rename to src/renderer/src/components/bottom-panel/bottom-panel.tsx
index 46e278ca..8a9cc090 100644
--- a/src/renderer/components/bottom-panel/bottom-panel.tsx
+++ b/src/renderer/src/components/bottom-panel/bottom-panel.tsx
@@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next";
import { useDownload } from "@renderer/hooks";
import * as styles from "./bottom-panel.css";
-import { vars } from "@renderer/theme.css";
+import { vars } from "../../theme.css";
import { useEffect, useMemo, useState } from "react";
import { useNavigate } from "react-router-dom";
import { VERSION_CODENAME } from "@renderer/constants";
@@ -23,7 +23,7 @@ export function BottomPanel() {
}, []);
const status = useMemo(() => {
- if (isDownloading) {
+ if (isDownloading && game) {
if (game.status === GameStatus.DownloadingMetadata)
return t("downloading_metadata", { title: game.title });
@@ -62,7 +62,7 @@ export function BottomPanel() {
- v{version} "{VERSION_CODENAME}"
+ v{version} "{VERSION_CODENAME}"
);
diff --git a/src/renderer/components/button/button.css.ts b/src/renderer/src/components/button/button.css.ts
similarity index 100%
rename from src/renderer/components/button/button.css.ts
rename to src/renderer/src/components/button/button.css.ts
diff --git a/src/renderer/components/button/button.tsx b/src/renderer/src/components/button/button.tsx
similarity index 100%
rename from src/renderer/components/button/button.tsx
rename to src/renderer/src/components/button/button.tsx
diff --git a/src/renderer/components/checkbox-field/checkbox-field.css.ts b/src/renderer/src/components/checkbox-field/checkbox-field.css.ts
similarity index 93%
rename from src/renderer/components/checkbox-field/checkbox-field.css.ts
rename to src/renderer/src/components/checkbox-field/checkbox-field.css.ts
index 951d9e90..2b7cb77c 100644
--- a/src/renderer/components/checkbox-field/checkbox-field.css.ts
+++ b/src/renderer/src/components/checkbox-field/checkbox-field.css.ts
@@ -1,4 +1,4 @@
-import { SPACING_UNIT, vars } from "@renderer/theme.css";
+import { SPACING_UNIT, vars } from "../../theme.css";
import { style } from "@vanilla-extract/css";
export const checkboxField = style({
diff --git a/src/renderer/components/checkbox-field/checkbox-field.tsx b/src/renderer/src/components/checkbox-field/checkbox-field.tsx
similarity index 100%
rename from src/renderer/components/checkbox-field/checkbox-field.tsx
rename to src/renderer/src/components/checkbox-field/checkbox-field.tsx
diff --git a/src/renderer/components/game-card/game-card.css.ts b/src/renderer/src/components/game-card/game-card.css.ts
similarity index 100%
rename from src/renderer/components/game-card/game-card.css.ts
rename to src/renderer/src/components/game-card/game-card.css.ts
diff --git a/src/renderer/components/game-card/game-card.tsx b/src/renderer/src/components/game-card/game-card.tsx
similarity index 94%
rename from src/renderer/components/game-card/game-card.tsx
rename to src/renderer/src/components/game-card/game-card.tsx
index d3e9cb8d..ce9789c8 100644
--- a/src/renderer/components/game-card/game-card.tsx
+++ b/src/renderer/src/components/game-card/game-card.tsx
@@ -1,8 +1,8 @@
import { DownloadIcon, FileDirectoryIcon } from "@primer/octicons-react";
import type { CatalogueEntry } from "@types";
-import SteamLogo from "@renderer/assets/steam-logo.svg";
-import EpicGamesLogo from "@renderer/assets/epic-games-logo.svg";
+import SteamLogo from "@renderer/assets/steam-logo.svg?react";
+import EpicGamesLogo from "@renderer/assets/epic-games-logo.svg?react";
import { AsyncImage } from "../async-image/async-image";
diff --git a/src/renderer/components/header/header.css.ts b/src/renderer/src/components/header/header.css.ts
similarity index 98%
rename from src/renderer/components/header/header.css.ts
rename to src/renderer/src/components/header/header.css.ts
index 1a9d5073..eb95dc6e 100644
--- a/src/renderer/components/header/header.css.ts
+++ b/src/renderer/src/components/header/header.css.ts
@@ -2,7 +2,7 @@ import type { ComplexStyleRule } from "@vanilla-extract/css";
import { keyframes, style } from "@vanilla-extract/css";
import { recipe } from "@vanilla-extract/recipes";
-import { SPACING_UNIT, vars } from "@renderer/theme.css";
+import { SPACING_UNIT, vars } from "../../theme.css";
export const slideIn = keyframes({
"0%": { transform: "translateX(20px)", opacity: "0" },
diff --git a/src/renderer/components/header/header.tsx b/src/renderer/src/components/header/header.tsx
similarity index 100%
rename from src/renderer/components/header/header.tsx
rename to src/renderer/src/components/header/header.tsx
diff --git a/src/renderer/components/hero/hero.css.ts b/src/renderer/src/components/hero/hero.css.ts
similarity index 89%
rename from src/renderer/components/hero/hero.css.ts
rename to src/renderer/src/components/hero/hero.css.ts
index 34d3fa76..3c9ec81c 100644
--- a/src/renderer/components/hero/hero.css.ts
+++ b/src/renderer/src/components/hero/hero.css.ts
@@ -1,5 +1,5 @@
import { style } from "@vanilla-extract/css";
-import { SPACING_UNIT, vars } from "@renderer/theme.css";
+import { SPACING_UNIT, vars } from "../../theme.css";
export const hero = style({
width: "100%",
@@ -13,11 +13,6 @@ export const hero = style({
cursor: "pointer",
border: `solid 1px ${vars.color.borderColor}`,
zIndex: "1",
- "@media": {
- "(min-width: 1250px)": {
- backgroundPosition: "center",
- },
- },
});
export const heroMedia = style({
diff --git a/src/renderer/components/hero/hero.tsx b/src/renderer/src/components/hero/hero.tsx
similarity index 92%
rename from src/renderer/components/hero/hero.tsx
rename to src/renderer/src/components/hero/hero.tsx
index 4e766ca8..9eadbd74 100644
--- a/src/renderer/components/hero/hero.tsx
+++ b/src/renderer/src/components/hero/hero.tsx
@@ -6,7 +6,7 @@ import { ShopDetails } from "@types";
import { getSteamLanguage, steamUrlBuilder } from "@renderer/helpers";
import { useTranslation } from "react-i18next";
-const FEATURED_GAME_ID = "377160";
+const FEATURED_GAME_ID = "253230";
export function Hero() {
const [featuredGameDetails, setFeaturedGameDetails] =
@@ -36,7 +36,7 @@ export function Hero() {
>
diff --git a/src/renderer/components/index.ts b/src/renderer/src/components/index.ts
similarity index 100%
rename from src/renderer/components/index.ts
rename to src/renderer/src/components/index.ts
diff --git a/src/renderer/components/modal/modal.css.ts b/src/renderer/src/components/modal/modal.css.ts
similarity index 100%
rename from src/renderer/components/modal/modal.css.ts
rename to src/renderer/src/components/modal/modal.css.ts
diff --git a/src/renderer/components/modal/modal.tsx b/src/renderer/src/components/modal/modal.tsx
similarity index 72%
rename from src/renderer/components/modal/modal.tsx
rename to src/renderer/src/components/modal/modal.tsx
index 9b5f8cf5..b8b4e7ef 100644
--- a/src/renderer/components/modal/modal.tsx
+++ b/src/renderer/src/components/modal/modal.tsx
@@ -41,6 +41,7 @@ export function Modal({
const isTopMostModal = () => {
const openModals = document.querySelectorAll("[role=modal]");
+
return (
openModals.length &&
openModals[openModals.length - 1] === modalContentRef.current
@@ -48,32 +49,37 @@ export function Modal({
};
useEffect(() => {
- const onKeyDown = (e: KeyboardEvent) => {
- if (e.key === "Escape" && isTopMostModal()) {
- handleCloseClick();
- }
- };
+ if (visible) {
+ const onKeyDown = (e: KeyboardEvent) => {
+ if (e.key === "Escape" && isTopMostModal()) {
+ handleCloseClick();
+ }
+ };
- window.addEventListener("keydown", onKeyDown);
- return () => window.removeEventListener("keydown", onKeyDown);
- }, [handleCloseClick]);
+ const onMouseDown = (e: MouseEvent) => {
+ if (!isTopMostModal()) return;
+ if (modalContentRef.current) {
+ const clickedWithinModal = modalContentRef.current.contains(
+ e.target as Node
+ );
- useEffect(() => {
- const onMouseDown = (e: MouseEvent) => {
- if (!isTopMostModal()) return;
+ if (!clickedWithinModal) {
+ handleCloseClick();
+ }
+ }
+ };
- const clickedOutsideContent = !modalContentRef.current.contains(
- e.target as Node
- );
+ window.addEventListener("keydown", onKeyDown);
+ window.addEventListener("mousedown", onMouseDown);
- if (clickedOutsideContent) {
- handleCloseClick();
- }
- };
+ return () => {
+ window.removeEventListener("keydown", onKeyDown);
+ window.removeEventListener("mousedown", onMouseDown);
+ };
+ }
- window.addEventListener("mousedown", onMouseDown);
- return () => window.removeEventListener("mousedown", onMouseDown);
- }, [handleCloseClick]);
+ return () => {};
+ }, [handleCloseClick, visible]);
useEffect(() => {
dispatch(toggleDragging(visible));
diff --git a/src/renderer/components/sidebar/download-icon.tsx b/src/renderer/src/components/sidebar/download-icon.tsx
similarity index 100%
rename from src/renderer/components/sidebar/download-icon.tsx
rename to src/renderer/src/components/sidebar/download-icon.tsx
diff --git a/src/renderer/components/sidebar/routes.tsx b/src/renderer/src/components/sidebar/routes.tsx
similarity index 100%
rename from src/renderer/components/sidebar/routes.tsx
rename to src/renderer/src/components/sidebar/routes.tsx
diff --git a/src/renderer/components/sidebar/sidebar.css.ts b/src/renderer/src/components/sidebar/sidebar.css.ts
similarity index 100%
rename from src/renderer/components/sidebar/sidebar.css.ts
rename to src/renderer/src/components/sidebar/sidebar.css.ts
diff --git a/src/renderer/components/sidebar/sidebar.tsx b/src/renderer/src/components/sidebar/sidebar.tsx
similarity index 97%
rename from src/renderer/components/sidebar/sidebar.tsx
rename to src/renderer/src/components/sidebar/sidebar.tsx
index cd4aff92..ab4ea26b 100644
--- a/src/renderer/components/sidebar/sidebar.tsx
+++ b/src/renderer/src/components/sidebar/sidebar.tsx
@@ -6,13 +6,14 @@ import type { Game } from "@types";
import { AsyncImage, TextField } from "@renderer/components";
import { useDownload, useLibrary } from "@renderer/hooks";
-import { SPACING_UNIT } from "@renderer/theme.css";
+import { SPACING_UNIT } from "../../theme.css";
import { routes } from "./routes";
import { MarkGithubIcon } from "@primer/octicons-react";
-import DiscordLogo from "@renderer/assets/discord-icon.svg";
-import XLogo from "@renderer/assets/x-icon.svg";
+import DiscordLogo from "@renderer/assets/discord-icon.svg?react";
+import XLogo from "@renderer/assets/x-icon.svg?react";
+
import * as styles from "./sidebar.css";
import { GameStatus } from "@globals";
diff --git a/src/renderer/components/text-field/text-field.css.ts b/src/renderer/src/components/text-field/text-field.css.ts
similarity index 95%
rename from src/renderer/components/text-field/text-field.css.ts
rename to src/renderer/src/components/text-field/text-field.css.ts
index 4b21b38d..d38230ef 100644
--- a/src/renderer/components/text-field/text-field.css.ts
+++ b/src/renderer/src/components/text-field/text-field.css.ts
@@ -1,4 +1,4 @@
-import { SPACING_UNIT, vars } from "@renderer/theme.css";
+import { SPACING_UNIT, vars } from "../../theme.css";
import { style } from "@vanilla-extract/css";
import { recipe } from "@vanilla-extract/recipes";
diff --git a/src/renderer/components/text-field/text-field.tsx b/src/renderer/src/components/text-field/text-field.tsx
similarity index 92%
rename from src/renderer/components/text-field/text-field.tsx
rename to src/renderer/src/components/text-field/text-field.tsx
index 62378615..3b86e290 100644
--- a/src/renderer/components/text-field/text-field.tsx
+++ b/src/renderer/src/components/text-field/text-field.tsx
@@ -7,7 +7,7 @@ export interface TextFieldProps
React.InputHTMLAttributes
,
HTMLInputElement
> {
- theme?: RecipeVariants["theme"];
+ theme?: NonNullable>["theme"];
label?: string;
}
diff --git a/src/renderer/constants.ts b/src/renderer/src/constants.ts
similarity index 100%
rename from src/renderer/constants.ts
rename to src/renderer/src/constants.ts
diff --git a/src/renderer/declaration.d.ts b/src/renderer/src/declaration.d.ts
similarity index 97%
rename from src/renderer/declaration.d.ts
rename to src/renderer/src/declaration.d.ts
index 541408bf..661253d0 100644
--- a/src/renderer/declaration.d.ts
+++ b/src/renderer/src/declaration.d.ts
@@ -64,7 +64,6 @@ declare global {
openGame: (gameId: number, executablePath: string) => Promise;
closeGame: (gameId: number) => Promise;
removeGameFromLibrary: (gameId: number) => Promise;
- removeGameFromDownload: (gameId: number) => Promise;
deleteGameFolder: (gameId: number) => Promise;
getGameByObjectID: (objectID: string) => Promise;
onPlaytime: (cb: (gameId: number) => void) => () => Electron.IpcRenderer;
diff --git a/src/renderer/features/download-slice.ts b/src/renderer/src/features/download-slice.ts
similarity index 100%
rename from src/renderer/features/download-slice.ts
rename to src/renderer/src/features/download-slice.ts
diff --git a/src/renderer/features/index.ts b/src/renderer/src/features/index.ts
similarity index 100%
rename from src/renderer/features/index.ts
rename to src/renderer/src/features/index.ts
diff --git a/src/renderer/features/library-slice.ts b/src/renderer/src/features/library-slice.ts
similarity index 100%
rename from src/renderer/features/library-slice.ts
rename to src/renderer/src/features/library-slice.ts
diff --git a/src/renderer/features/repackers-friendly-names-slice.ts b/src/renderer/src/features/repackers-friendly-names-slice.ts
similarity index 100%
rename from src/renderer/features/repackers-friendly-names-slice.ts
rename to src/renderer/src/features/repackers-friendly-names-slice.ts
diff --git a/src/renderer/features/search-slice.ts b/src/renderer/src/features/search-slice.ts
similarity index 100%
rename from src/renderer/features/search-slice.ts
rename to src/renderer/src/features/search-slice.ts
diff --git a/src/renderer/features/use-preferences-slice.ts b/src/renderer/src/features/use-preferences-slice.ts
similarity index 83%
rename from src/renderer/features/use-preferences-slice.ts
rename to src/renderer/src/features/use-preferences-slice.ts
index f6a3cf65..d735e7a2 100644
--- a/src/renderer/features/use-preferences-slice.ts
+++ b/src/renderer/src/features/use-preferences-slice.ts
@@ -14,7 +14,10 @@ export const userPreferencesSlice = createSlice({
name: "userPreferences",
initialState,
reducers: {
- setUserPreferences: (state, action: PayloadAction) => {
+ setUserPreferences: (
+ state,
+ action: PayloadAction
+ ) => {
state.value = action.payload;
},
},
diff --git a/src/renderer/features/window-slice.ts b/src/renderer/src/features/window-slice.ts
similarity index 100%
rename from src/renderer/features/window-slice.ts
rename to src/renderer/src/features/window-slice.ts
diff --git a/src/renderer/helpers.ts b/src/renderer/src/helpers.ts
similarity index 100%
rename from src/renderer/helpers.ts
rename to src/renderer/src/helpers.ts
diff --git a/src/renderer/hooks/index.ts b/src/renderer/src/hooks/index.ts
similarity index 100%
rename from src/renderer/hooks/index.ts
rename to src/renderer/src/hooks/index.ts
diff --git a/src/renderer/hooks/redux.ts b/src/renderer/src/hooks/redux.ts
similarity index 100%
rename from src/renderer/hooks/redux.ts
rename to src/renderer/src/hooks/redux.ts
diff --git a/src/renderer/hooks/use-date.ts b/src/renderer/src/hooks/use-date.ts
similarity index 100%
rename from src/renderer/hooks/use-date.ts
rename to src/renderer/src/hooks/use-date.ts
diff --git a/src/renderer/hooks/use-download.ts b/src/renderer/src/hooks/use-download.ts
similarity index 94%
rename from src/renderer/hooks/use-download.ts
rename to src/renderer/src/hooks/use-download.ts
index e11a3fef..092b352f 100644
--- a/src/renderer/hooks/use-download.ts
+++ b/src/renderer/src/hooks/use-download.ts
@@ -59,15 +59,15 @@ export function useDownload() {
deleteGame(gameId);
});
- const removeGameFromDownload = (gameId: number) =>
- window.electron.removeGameFromDownload(gameId).then(() => {
+ const removeGameFromLibrary = (gameId: number) =>
+ window.electron.removeGameFromLibrary(gameId).then(() => {
updateLibrary();
});
const isVerifying = GameStatus.isVerifying(lastPacket?.game.status);
const getETA = () => {
- if (isVerifying || !isFinite(lastPacket?.timeRemaining)) {
+ if (isVerifying || !isFinite(lastPacket?.timeRemaining ?? 0)) {
return "";
}
@@ -125,7 +125,7 @@ export function useDownload() {
pauseDownload,
resumeDownload,
cancelDownload,
- removeGameFromDownload,
+ removeGameFromLibrary,
deleteGame,
isGameDeleting,
clearDownload: () => dispatch(clearDownload()),
diff --git a/src/renderer/hooks/use-library.ts b/src/renderer/src/hooks/use-library.ts
similarity index 69%
rename from src/renderer/hooks/use-library.ts
rename to src/renderer/src/hooks/use-library.ts
index 076b91a7..f7310df0 100644
--- a/src/renderer/hooks/use-library.ts
+++ b/src/renderer/src/hooks/use-library.ts
@@ -12,10 +12,5 @@ export function useLibrary() {
.then((updatedLibrary) => dispatch(setLibrary(updatedLibrary)));
}, [dispatch]);
- const removeGameFromLibrary = (gameId: number) =>
- window.electron.removeGameFromLibrary(gameId).then(() => {
- updateLibrary();
- });
-
- return { library, updateLibrary, removeGameFromLibrary };
+ return { library, updateLibrary };
}
diff --git a/src/renderer/main.tsx b/src/renderer/src/main.tsx
similarity index 67%
rename from src/renderer/main.tsx
rename to src/renderer/src/main.tsx
index 956e9b6c..d9b7821e 100644
--- a/src/renderer/main.tsx
+++ b/src/renderer/src/main.tsx
@@ -4,7 +4,7 @@ import i18n from "i18next";
import { initReactI18next } from "react-i18next";
import { Provider } from "react-redux";
import LanguageDetector from "i18next-browser-languagedetector";
-import { createHashRouter, RouterProvider } from "react-router-dom";
+import { HashRouter, Route, Routes } from "react-router-dom";
import { init } from "@sentry/electron/renderer";
import { init as reactInit } from "@sentry/react";
@@ -31,10 +31,10 @@ import { store } from "./store";
import * as resources from "@locales";
-if (process.env.SENTRY_DSN) {
+if (import.meta.env.RENDERER_VITE_SENTRY_DSN) {
init(
{
- dsn: process.env.SENTRY_DSN,
+ dsn: import.meta.env.RENDERER_VITE_SENTRY_DSN,
beforeSend: async (event) => {
const userPreferences = await window.electron.getUserPreferences();
@@ -46,39 +46,6 @@ if (process.env.SENTRY_DSN) {
);
}
-const router = createHashRouter([
- {
- path: "/",
- Component: App,
- children: [
- {
- path: "/",
- Component: Home,
- },
- {
- path: "/catalogue",
- Component: Catalogue,
- },
- {
- path: "/downloads",
- Component: Downloads,
- },
- {
- path: "/game/:shop/:objectID",
- Component: GameDetails,
- },
- {
- path: "/search",
- Component: SearchResults,
- },
- {
- path: "/settings",
- Component: Settings,
- },
- ],
- },
-]);
-
i18n
.use(LanguageDetector)
.use(initReactI18next)
@@ -96,7 +63,18 @@ i18n
ReactDOM.createRoot(document.getElementById("root")!).render(
-
+
+
+
+
+
+
+
+
+
+
+
+
);
diff --git a/src/renderer/pages/catalogue/catalogue.tsx b/src/renderer/src/pages/catalogue/catalogue.tsx
similarity index 98%
rename from src/renderer/pages/catalogue/catalogue.tsx
rename to src/renderer/src/pages/catalogue/catalogue.tsx
index fb3c620d..8dc5fc56 100644
--- a/src/renderer/pages/catalogue/catalogue.tsx
+++ b/src/renderer/src/pages/catalogue/catalogue.tsx
@@ -6,7 +6,7 @@ import type { CatalogueEntry } from "@types";
import { clearSearch } from "@renderer/features";
import { useAppDispatch } from "@renderer/hooks";
-import { vars } from "@renderer/theme.css";
+import { vars } from "../../theme.css";
import { useEffect, useRef, useState } from "react";
import { useNavigate, useSearchParams } from "react-router-dom";
import * as styles from "../home/home.css";
diff --git a/src/renderer/pages/downloads/delete-modal.css.ts b/src/renderer/src/pages/downloads/delete-modal.css.ts
similarity index 80%
rename from src/renderer/pages/downloads/delete-modal.css.ts
rename to src/renderer/src/pages/downloads/delete-modal.css.ts
index 4d04c7a2..ef0ba179 100644
--- a/src/renderer/pages/downloads/delete-modal.css.ts
+++ b/src/renderer/src/pages/downloads/delete-modal.css.ts
@@ -1,4 +1,4 @@
-import { SPACING_UNIT } from "@renderer/theme.css";
+import { SPACING_UNIT } from "../../theme.css";
import { style } from "@vanilla-extract/css";
export const deleteActionsButtonsCtn = style({
diff --git a/src/renderer/pages/downloads/delete-modal.tsx b/src/renderer/src/pages/downloads/delete-modal.tsx
similarity index 100%
rename from src/renderer/pages/downloads/delete-modal.tsx
rename to src/renderer/src/pages/downloads/delete-modal.tsx
diff --git a/src/renderer/pages/downloads/downloads.css.ts b/src/renderer/src/pages/downloads/downloads.css.ts
similarity index 97%
rename from src/renderer/pages/downloads/downloads.css.ts
rename to src/renderer/src/pages/downloads/downloads.css.ts
index 9026b16b..fd68de81 100644
--- a/src/renderer/pages/downloads/downloads.css.ts
+++ b/src/renderer/src/pages/downloads/downloads.css.ts
@@ -1,4 +1,4 @@
-import { SPACING_UNIT, vars } from "@renderer/theme.css";
+import { SPACING_UNIT, vars } from "../../theme.css";
import { style } from "@vanilla-extract/css";
import { recipe } from "@vanilla-extract/recipes";
diff --git a/src/renderer/pages/downloads/downloads.tsx b/src/renderer/src/pages/downloads/downloads.tsx
similarity index 97%
rename from src/renderer/pages/downloads/downloads.tsx
rename to src/renderer/src/pages/downloads/downloads.tsx
index 7c33178a..4300d23e 100644
--- a/src/renderer/pages/downloads/downloads.tsx
+++ b/src/renderer/src/pages/downloads/downloads.tsx
@@ -34,6 +34,7 @@ export function Downloads() {
numSeeds,
pauseDownload,
resumeDownload,
+ removeGameFromLibrary,
cancelDownload,
deleteGame,
isGameDeleting,
@@ -53,11 +54,6 @@ export function Downloads() {
updateLibrary();
});
- const removeGameFromDownload = (gameId: number) =>
- window.electron.removeGameFromDownload(gameId).then(() => {
- updateLibrary();
- });
-
const getFinalDownloadSize = (game: Game) => {
const isGameDownloading = isDownloading && gameDownloading?.id === game?.id;
@@ -195,7 +191,7 @@ export function Downloads() {
@@ -281,6 +274,7 @@ export function GameDetails() {
className={styles.randomizerButton}
onClick={handleRandomizerClick}
theme="outline"
+ disabled={isLoadingRandomGame}
>