fix(extraction): repair missing archives before manual retry
Persist selected manual extraction repair requests, re-download only missing multipart members, and resume extraction after successful repairs across Stop, failures, and application restarts. Allow complete archive sets and missing sets from the same package to progress together, preserve existing parts, and keep retry generations and run contexts isolated after failed repair downloads. Expose direct child retries for persisted repair items and validate repair state through storage normalization and renderer deltas.
This commit is contained in:
@@ -1498,8 +1498,10 @@ describe("settings storage", () => {
|
||||
status: "downloading",
|
||||
itemIds: ["item1", "item2", "item3", "item4"],
|
||||
cancelled: false,
|
||||
enabled: true,
|
||||
downloadStartedAt: 0,
|
||||
enabled: true,
|
||||
manualExtractionPending: true,
|
||||
manualExtractionRepairItemIds: ["item1", "missing-item", "item1"],
|
||||
downloadStartedAt: 0,
|
||||
downloadCompletedAt: 0,
|
||||
createdAt: Date.now(),
|
||||
updatedAt: Date.now()
|
||||
@@ -1595,8 +1597,10 @@ describe("settings storage", () => {
|
||||
expect(loaded.items["item3"].status).toBe("completed");
|
||||
expect(loaded.items["item4"].status).toBe("queued");
|
||||
expect(loaded.items["item1"].downloadedBytes).toBe(5000);
|
||||
expect(loaded.packages["pkg1"].name).toBe("Test Package");
|
||||
});
|
||||
expect(loaded.packages["pkg1"].name).toBe("Test Package");
|
||||
expect(loaded.packages["pkg1"].manualExtractionPending).toBe(true);
|
||||
expect(loaded.packages["pkg1"].manualExtractionRepairItemIds).toEqual(["item1"]);
|
||||
});
|
||||
|
||||
it("preserves cleaned package progress aggregates while normalizing a session", () => {
|
||||
const session = emptySession();
|
||||
|
||||
Reference in New Issue
Block a user