From 96d59a0fd75ed67358f563d929012ccbbbcb3be5 Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Thu, 10 Apr 2025 15:43:55 -0300 Subject: [PATCH] fix: improve game folder deletion logic --- src/main/events/library/delete-game-folder.ts | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/main/events/library/delete-game-folder.ts b/src/main/events/library/delete-game-folder.ts index 9c290fe0..b9cef25b 100644 --- a/src/main/events/library/delete-game-folder.ts +++ b/src/main/events/library/delete-game-folder.ts @@ -13,35 +13,42 @@ const deleteGameFolder = async ( objectId: string ): Promise => { const downloadKey = levelKeys.game(shop, objectId); - const download = await downloadsSublevel.get(downloadKey); - if (!download) return; + if (!download?.folderName) return; - if (download.folderName) { - const folderPath = path.join( - download.downloadPath ?? (await getDownloadsPath()), - download.folderName - ); + const folderPath = path.join( + download.downloadPath ?? (await getDownloadsPath()), + download.folderName + ); - if (fs.existsSync(folderPath)) { + const metaPath = `${folderPath}.meta`; + + const deleteFile = async (filePath: string, isDirectory = false) => { + if (fs.existsSync(filePath)) { await new Promise((resolve, reject) => { fs.rm( - folderPath, - { recursive: true, force: true, maxRetries: 5, retryDelay: 200 }, + filePath, + { + recursive: isDirectory, + force: true, + maxRetries: 5, + retryDelay: 200, + }, (error) => { if (error) { logger.error(error); reject(); } - resolve(); } ); }); } - } + }; + await deleteFile(folderPath, true); + await deleteFile(metaPath); await downloadsSublevel.del(downloadKey); };