Compare commits
No commits in common. "4b624693ecaa7b8c97c3c3ed42f6829953f6b7ce" and "df27bf2252cf7c7aac918308f7e3ff6f14021749" have entirely different histories.
4b624693ec
...
df27bf2252
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "real-debrid-downloader",
|
"name": "real-debrid-downloader",
|
||||||
"version": "1.7.93",
|
"version": "1.7.92",
|
||||||
"description": "Desktop downloader",
|
"description": "Desktop downloader",
|
||||||
"main": "build/main/main/main.js",
|
"main": "build/main/main/main.js",
|
||||||
"author": "Sucukdeluxe",
|
"author": "Sucukdeluxe",
|
||||||
|
|||||||
@ -10622,10 +10622,6 @@ export class DownloadManager extends EventEmitter {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pkg.status !== "completed") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const allDone = pkg.itemIds.every((itemId) => {
|
const allDone = pkg.itemIds.every((itemId) => {
|
||||||
const item = this.session.items[itemId];
|
const item = this.session.items[itemId];
|
||||||
return !item || item.status === "completed" || item.status === "cancelled" || item.status === "failed";
|
return !item || item.status === "completed" || item.status === "cancelled" || item.status === "failed";
|
||||||
@ -10695,9 +10691,6 @@ export class DownloadManager extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (policy === "package_done") {
|
if (policy === "package_done") {
|
||||||
if (pkg.status !== "completed") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const hasOpen = pkg.itemIds.some((id) => {
|
const hasOpen = pkg.itemIds.some((id) => {
|
||||||
const item = this.session.items[id];
|
const item = this.session.items[id];
|
||||||
return item != null && item.status !== "completed" && item.status !== "cancelled" && item.status !== "failed";
|
return item != null && item.status !== "completed" && item.status !== "cancelled" && item.status !== "failed";
|
||||||
|
|||||||
@ -6292,95 +6292,6 @@ describe("download manager", () => {
|
|||||||
}
|
}
|
||||||
}, 35000);
|
}, 35000);
|
||||||
|
|
||||||
it("keeps partially failed packages under package_done cleanup policy", () => {
|
|
||||||
const root = fs.mkdtempSync(path.join(os.tmpdir(), "rd-dm-"));
|
|
||||||
tempDirs.push(root);
|
|
||||||
|
|
||||||
const session = emptySession();
|
|
||||||
const packageId = "package-done-partial-failure-pkg";
|
|
||||||
const completedItemId = "package-done-partial-failure-completed";
|
|
||||||
const failedItemId = "package-done-partial-failure-failed";
|
|
||||||
const createdAt = Date.now() - 10_000;
|
|
||||||
|
|
||||||
session.packageOrder = [packageId];
|
|
||||||
session.packages[packageId] = {
|
|
||||||
id: packageId,
|
|
||||||
name: "package-done-partial-failure",
|
|
||||||
outputDir: path.join(root, "downloads", "package-done-partial-failure"),
|
|
||||||
extractDir: path.join(root, "extract", "package-done-partial-failure"),
|
|
||||||
status: "failed",
|
|
||||||
itemIds: [completedItemId, failedItemId],
|
|
||||||
cancelled: false,
|
|
||||||
enabled: true,
|
|
||||||
createdAt,
|
|
||||||
updatedAt: createdAt
|
|
||||||
};
|
|
||||||
session.items[completedItemId] = {
|
|
||||||
id: completedItemId,
|
|
||||||
packageId,
|
|
||||||
url: "https://dummy/package-done-partial-failure-completed",
|
|
||||||
provider: "realdebrid",
|
|
||||||
status: "completed",
|
|
||||||
retries: 0,
|
|
||||||
speedBps: 0,
|
|
||||||
downloadedBytes: 1024,
|
|
||||||
totalBytes: 1024,
|
|
||||||
progressPercent: 100,
|
|
||||||
fileName: "episode01.rar",
|
|
||||||
targetPath: path.join(root, "downloads", "package-done-partial-failure", "episode01.rar"),
|
|
||||||
resumable: true,
|
|
||||||
attempts: 1,
|
|
||||||
lastError: "",
|
|
||||||
fullStatus: "Entpackt - Done (<1s)",
|
|
||||||
createdAt,
|
|
||||||
updatedAt: createdAt
|
|
||||||
};
|
|
||||||
session.items[failedItemId] = {
|
|
||||||
id: failedItemId,
|
|
||||||
packageId,
|
|
||||||
url: "https://dummy/package-done-partial-failure-failed",
|
|
||||||
provider: "realdebrid",
|
|
||||||
status: "failed",
|
|
||||||
retries: 1,
|
|
||||||
speedBps: 0,
|
|
||||||
downloadedBytes: 0,
|
|
||||||
totalBytes: 1024,
|
|
||||||
progressPercent: 0,
|
|
||||||
fileName: "episode02.rar",
|
|
||||||
targetPath: path.join(root, "downloads", "package-done-partial-failure", "episode02.rar"),
|
|
||||||
resumable: true,
|
|
||||||
attempts: 1,
|
|
||||||
lastError: "checksum",
|
|
||||||
fullStatus: "Entpack-Fehler: Checksum error",
|
|
||||||
createdAt,
|
|
||||||
updatedAt: createdAt
|
|
||||||
};
|
|
||||||
|
|
||||||
const manager = new DownloadManager(
|
|
||||||
{
|
|
||||||
...defaultSettings(),
|
|
||||||
token: "rd-token",
|
|
||||||
outputDir: path.join(root, "downloads"),
|
|
||||||
extractDir: path.join(root, "extract"),
|
|
||||||
autoExtract: true,
|
|
||||||
enableIntegrityCheck: false,
|
|
||||||
cleanupMode: "delete",
|
|
||||||
completedCleanupPolicy: "package_done"
|
|
||||||
},
|
|
||||||
session,
|
|
||||||
createStoragePaths(path.join(root, "state"))
|
|
||||||
);
|
|
||||||
|
|
||||||
(manager as any).applyPackageDoneCleanup(packageId);
|
|
||||||
(manager as any).applyCompletedCleanupPolicy(packageId, completedItemId);
|
|
||||||
|
|
||||||
const snapshot = manager.getSnapshot();
|
|
||||||
expect(snapshot.session.packages[packageId]).toBeDefined();
|
|
||||||
expect(snapshot.session.items[completedItemId]).toBeDefined();
|
|
||||||
expect(snapshot.session.items[failedItemId]).toBeDefined();
|
|
||||||
expect(snapshot.session.packageOrder).toEqual([packageId]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("waits for deferred MKV collection before package_done cleanup removes the package", async () => {
|
it("waits for deferred MKV collection before package_done cleanup removes the package", async () => {
|
||||||
const root = fs.mkdtempSync(path.join(os.tmpdir(), "rd-dm-"));
|
const root = fs.mkdtempSync(path.join(os.tmpdir(), "rd-dm-"));
|
||||||
tempDirs.push(root);
|
tempDirs.push(root);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user