Release v1.5.96
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
00fae5cadd
commit
27833615b7
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "real-debrid-downloader",
|
"name": "real-debrid-downloader",
|
||||||
"version": "1.5.95",
|
"version": "1.5.96",
|
||||||
"description": "Real-Debrid Downloader Desktop (Electron + React + TypeScript)",
|
"description": "Real-Debrid Downloader Desktop (Electron + React + TypeScript)",
|
||||||
"main": "build/main/main/main.js",
|
"main": "build/main/main/main.js",
|
||||||
"author": "Sucukdeluxe",
|
"author": "Sucukdeluxe",
|
||||||
|
|||||||
@ -5686,13 +5686,19 @@ export class DownloadManager extends EventEmitter {
|
|||||||
return ready;
|
return ready;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build lookup: pathKey → item status for pending items
|
// Build lookup: pathKey → item status for pending items.
|
||||||
|
// Also map by filename (resolved against outputDir) so items without
|
||||||
|
// targetPath (never started) are still found by the disk-fallback check.
|
||||||
const pendingItemStatus = new Map<string, string>();
|
const pendingItemStatus = new Map<string, string>();
|
||||||
for (const itemId of pkg.itemIds) {
|
for (const itemId of pkg.itemIds) {
|
||||||
const item = this.session.items[itemId];
|
const item = this.session.items[itemId];
|
||||||
if (item && item.targetPath && item.status !== "completed") {
|
if (!item || item.status === "completed") continue;
|
||||||
|
if (item.targetPath) {
|
||||||
pendingItemStatus.set(pathKey(item.targetPath), item.status);
|
pendingItemStatus.set(pathKey(item.targetPath), item.status);
|
||||||
}
|
}
|
||||||
|
if (item.fileName && pkg.outputDir) {
|
||||||
|
pendingItemStatus.set(pathKey(path.join(pkg.outputDir, item.fileName)), item.status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const candidate of candidates) {
|
for (const candidate of candidates) {
|
||||||
@ -5811,8 +5817,11 @@ export class DownloadManager extends EventEmitter {
|
|||||||
};
|
};
|
||||||
const hybridItems = completedItems.filter(isHybridItem);
|
const hybridItems = completedItems.filter(isHybridItem);
|
||||||
|
|
||||||
|
// Resolve archive items dynamically from ALL package items (not just
|
||||||
|
// the stale completedItems snapshot) so items that complete during
|
||||||
|
// extraction are included and get the correct "Done" label.
|
||||||
const resolveArchiveItems = (archiveName: string): DownloadItem[] =>
|
const resolveArchiveItems = (archiveName: string): DownloadItem[] =>
|
||||||
resolveArchiveItemsFromList(archiveName, hybridItems);
|
resolveArchiveItemsFromList(archiveName, items);
|
||||||
|
|
||||||
// Track multiple active archives for parallel hybrid extraction
|
// Track multiple active archives for parallel hybrid extraction
|
||||||
const activeHybridArchiveMap = new Map<string, DownloadItem[]>();
|
const activeHybridArchiveMap = new Map<string, DownloadItem[]>();
|
||||||
|
|||||||
@ -662,14 +662,14 @@ export function App(): ReactElement {
|
|||||||
|
|
||||||
const itemCount = Object.keys(state.session.items).length;
|
const itemCount = Object.keys(state.session.items).length;
|
||||||
let flushDelay = itemCount >= 1500
|
let flushDelay = itemCount >= 1500
|
||||||
? 1200
|
? 900
|
||||||
: itemCount >= 700
|
: itemCount >= 700
|
||||||
? 920
|
? 650
|
||||||
: itemCount >= 250
|
: itemCount >= 250
|
||||||
? 640
|
? 400
|
||||||
: 300;
|
: 150;
|
||||||
if (!state.session.running) {
|
if (!state.session.running) {
|
||||||
flushDelay = Math.min(flushDelay, 320);
|
flushDelay = Math.min(flushDelay, 200);
|
||||||
}
|
}
|
||||||
if (activeTabRef.current !== "downloads") {
|
if (activeTabRef.current !== "downloads") {
|
||||||
flushDelay = Math.max(flushDelay, 800);
|
flushDelay = Math.max(flushDelay, 800);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user