Add confirmed offline-package removal while preserving downloaded files

This commit is contained in:
Sucukdeluxe
2026-09-04 21:34:06 +02:00
parent d84673da1d
commit 8b061cdbc1
12 changed files with 134 additions and 3 deletions
+12 -3
View File
@@ -1,4 +1,5 @@
import fs from "node:fs";
import { getPackagesWithOfflineLinks } from "../shared/offline-packages";
import path from "node:path";
import os from "node:os";
import { createHash } from "node:crypto";
@@ -6384,7 +6385,13 @@ export class DownloadManager extends EventEmitter {
});
}
public cancelPackage(packageId: string): void {
public removeOfflinePackages(packageIds: string[]): number {
const candidates = getPackagesWithOfflineLinks(packageIds, this.session.packages, this.session.items);
for (const packageId of candidates) this.cancelPackage(packageId, true);
return candidates.length;
}
public cancelPackage(packageId: string, preserveFiles = false): void {
const pkg = this.session.packages[packageId];
if (!pkg) {
return;
@@ -6408,8 +6415,8 @@ export class DownloadManager extends EventEmitter {
}
const active = this.activeTasks.get(itemId);
if (active) {
active.abortReason = "cancel";
active.abortController.abort("cancel");
active.abortReason = preserveFiles ? "stop" : "cancel";
active.abortController.abort(active.abortReason);
}
}
@@ -6419,6 +6426,8 @@ export class DownloadManager extends EventEmitter {
this.persistSoon();
this.emitState(true);
if (preserveFiles) return;
this.cleanupQueue = this.cleanupQueue
.then(async () => {
const removed = await cleanupCancelledPackageArtifactsAsync(outputDir, {