mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-30 14:21:04 +00:00
51 lines
1.3 KiB
TypeScript
51 lines
1.3 KiB
TypeScript
import path from "node:path";
|
|
import fs from "node:fs";
|
|
|
|
import { registerEvent } from "../register-event";
|
|
import { logger } from "@main/services";
|
|
import { downloadsSublevel, gamesSublevel, levelKeys } from "@main/level";
|
|
|
|
const deleteArchive = async (
|
|
_event: Electron.IpcMainInvokeEvent,
|
|
filePath: string
|
|
) => {
|
|
try {
|
|
if (fs.existsSync(filePath)) {
|
|
await fs.promises.unlink(filePath);
|
|
logger.info(`Deleted archive: ${filePath}`);
|
|
}
|
|
|
|
// Find the game that has this archive and clear installer size
|
|
const normalizedPath = path.normalize(filePath);
|
|
const downloads = await downloadsSublevel.values().all();
|
|
|
|
for (const download of downloads) {
|
|
if (!download.folderName) continue;
|
|
|
|
const downloadPath = path.normalize(
|
|
path.join(download.downloadPath, download.folderName)
|
|
);
|
|
|
|
if (downloadPath === normalizedPath) {
|
|
const gameKey = levelKeys.game(download.shop, download.objectId);
|
|
const game = await gamesSublevel.get(gameKey);
|
|
|
|
if (game) {
|
|
await gamesSublevel.put(gameKey, {
|
|
...game,
|
|
installerSizeInBytes: null,
|
|
});
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
} catch (err) {
|
|
logger.error(`Failed to delete archive: ${filePath}`, err);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
registerEvent("deleteArchive", deleteArchive);
|