diff --git a/src/main/events/library/delete-game-folder.ts b/src/main/events/library/delete-game-folder.ts index 1e98e6fe..feabc20e 100644 --- a/src/main/events/library/delete-game-folder.ts +++ b/src/main/events/library/delete-game-folder.ts @@ -1,8 +1,6 @@ import path from "node:path"; import fs from "node:fs"; -import { In } from "typeorm"; - import { gameRepository } from "@main/repository"; import { getDownloadsPath } from "../helpers/get-downloads-path"; @@ -16,7 +14,6 @@ const deleteGameFolder = async ( const game = await gameRepository.findOne({ where: { id: gameId, - status: In(["removed", "complete"]), isDeleted: false, }, }); @@ -29,22 +26,34 @@ const deleteGameFolder = async ( game.folderName ); - if (fs.existsSync(folderPath)) { - return new Promise((resolve, reject) => { - fs.rm( - folderPath, - { recursive: true, force: true, maxRetries: 5, retryDelay: 200 }, - (error) => { - if (error) { - logger.error(error); - reject(); - } - - resolve(); - } - ); - }); + if (!fs.existsSync(folderPath)) { + await gameRepository.update( + { id: gameId }, + { downloadPath: null, folderName: null } + ); } + + console.log("folder exists"); + return new Promise((resolve, reject) => { + fs.rm( + folderPath, + { recursive: true, force: true, maxRetries: 5, retryDelay: 200 }, + (error) => { + if (error) { + logger.error(error); + reject(); + } + + resolve(); + } + ); + }).then(async () => { + console.log("resolved"); + await gameRepository.update( + { id: gameId }, + { downloadPath: null, folderName: null } + ); + }); } }; diff --git a/src/main/services/steam.ts b/src/main/services/steam.ts index 0f2d4987..53e243f3 100644 --- a/src/main/services/steam.ts +++ b/src/main/services/steam.ts @@ -30,6 +30,6 @@ export const getSteamAppDetails = async ( }) .catch((err) => { logger.error(err, { method: "getSteamAppDetails" }); - throw new Error(err); + return null; }); }; diff --git a/src/renderer/src/hooks/use-download.ts b/src/renderer/src/hooks/use-download.ts index 93b7fe43..d3bf2c7a 100644 --- a/src/renderer/src/hooks/use-download.ts +++ b/src/renderer/src/hooks/use-download.ts @@ -52,7 +52,6 @@ export function useDownload() { try { await window.electron.deleteGameFolder(gameId); - await window.electron.removeGame(gameId); updateLibrary(); } finally { dispatch(removeGameFromDeleting(gameId)); diff --git a/src/renderer/src/pages/downloads/downloads.tsx b/src/renderer/src/pages/downloads/downloads.tsx index b20c4dc5..1ed3a595 100644 --- a/src/renderer/src/pages/downloads/downloads.tsx +++ b/src/renderer/src/pages/downloads/downloads.tsx @@ -47,17 +47,21 @@ export function Downloads() { complete: [], }; - const result = library.reduce((prev, next) => { - if (lastPacket?.game.id === next.id) { - return { ...prev, downloading: [...prev.downloading, next] }; - } + const result = library + .filter((game) => { + return game.downloadPath; + }) + .reduce((prev, next) => { + if (lastPacket?.game.id === next.id) { + return { ...prev, downloading: [...prev.downloading, next] }; + } - if (next.downloadQueue || next.status === "paused") { - return { ...prev, queued: [...prev.queued, next] }; - } + if (next.downloadQueue || next.status === "paused") { + return { ...prev, queued: [...prev.queued, next] }; + } - return { ...prev, complete: [...prev.complete, next] }; - }, initialValue); + return { ...prev, complete: [...prev.complete, next] }; + }, initialValue); const queued = orderBy( result.queued, @@ -66,7 +70,7 @@ export function Downloads() { ); const complete = orderBy(result.complete, (game) => - game.status === "complete" ? 0 : 1 + game.progress === 1 ? 0 : 1 ); return { diff --git a/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx b/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx index 937ca613..06406d22 100644 --- a/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx +++ b/src/renderer/src/pages/game-details/hero/hero-panel-actions.tsx @@ -77,13 +77,11 @@ export function HeroPanelActions() { if (game) { await removeGameFromLibrary(game.id); } else { - const gameExecutablePath = await selectGameExecutable(); - await window.electron.addGameToLibrary( objectID!, gameTitle, "steam", - gameExecutablePath + null ); } @@ -110,11 +108,6 @@ export function HeroPanelActions() { return; } - if (game?.executablePath) { - window.electron.openGame(game.id, game.executablePath); - return; - } - const gameExecutablePath = await selectGameExecutable(); if (gameExecutablePath) window.electron.openGame(game.id, gameExecutablePath); @@ -139,6 +132,17 @@ export function HeroPanelActions() { ); + const showDownloadOptionsButton = ( + + ); + if (game?.status === "active" && game?.progress !== 1) { return ( <> @@ -188,14 +192,7 @@ export function HeroPanelActions() { if (game?.status === "removed") { return ( <> - + {showDownloadOptionsButton}