fix: improve game folder deletion logic

This commit is contained in:
Hachi-R
2025-04-10 15:43:55 -03:00
parent 84600ea0dc
commit 96d59a0fd7

View File

@@ -13,35 +13,42 @@ const deleteGameFolder = async (
objectId: string objectId: string
): Promise<void> => { ): Promise<void> => {
const downloadKey = levelKeys.game(shop, objectId); const downloadKey = levelKeys.game(shop, objectId);
const download = await downloadsSublevel.get(downloadKey); const download = await downloadsSublevel.get(downloadKey);
if (!download) return; if (!download?.folderName) return;
if (download.folderName) { const folderPath = path.join(
const folderPath = path.join( download.downloadPath ?? (await getDownloadsPath()),
download.downloadPath ?? (await getDownloadsPath()), download.folderName
download.folderName );
);
if (fs.existsSync(folderPath)) { const metaPath = `${folderPath}.meta`;
const deleteFile = async (filePath: string, isDirectory = false) => {
if (fs.existsSync(filePath)) {
await new Promise<void>((resolve, reject) => { await new Promise<void>((resolve, reject) => {
fs.rm( fs.rm(
folderPath, filePath,
{ recursive: true, force: true, maxRetries: 5, retryDelay: 200 }, {
recursive: isDirectory,
force: true,
maxRetries: 5,
retryDelay: 200,
},
(error) => { (error) => {
if (error) { if (error) {
logger.error(error); logger.error(error);
reject(); reject();
} }
resolve(); resolve();
} }
); );
}); });
} }
} };
await deleteFile(folderPath, true);
await deleteFile(metaPath);
await downloadsSublevel.del(downloadKey); await downloadsSublevel.del(downloadKey);
}; };