mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-02-01 19:15:07 +01:00
fix: improve game folder deletion logic
This commit is contained in:
@@ -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);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user