Release v1.6.15
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
4e8e8eba66
commit
56c0b633c8
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "real-debrid-downloader",
|
"name": "real-debrid-downloader",
|
||||||
"version": "1.6.14",
|
"version": "1.6.15",
|
||||||
"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",
|
||||||
|
|||||||
@ -4054,7 +4054,9 @@ export class DownloadManager extends EventEmitter {
|
|||||||
|
|
||||||
this.runGlobalStallWatchdog(now);
|
this.runGlobalStallWatchdog(now);
|
||||||
|
|
||||||
if (this.activeTasks.size === 0 && !this.hasQueuedItems() && !this.hasDelayedQueuedItems() && this.packagePostProcessTasks.size === 0) {
|
const downloadsComplete = this.activeTasks.size === 0 && !this.hasQueuedItems() && !this.hasDelayedQueuedItems();
|
||||||
|
const postProcessComplete = this.packagePostProcessTasks.size === 0;
|
||||||
|
if (downloadsComplete && (postProcessComplete || this.settings.autoExtractWhenStopped)) {
|
||||||
this.finishRun();
|
this.finishRun();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -476,6 +476,7 @@ export function App(): ReactElement {
|
|||||||
const snapshotRef = useRef(snapshot);
|
const snapshotRef = useRef(snapshot);
|
||||||
snapshotRef.current = snapshot;
|
snapshotRef.current = snapshot;
|
||||||
const tabRef = useRef(tab);
|
const tabRef = useRef(tab);
|
||||||
|
const autoExpandedPkgsRef = useRef(new Set<string>());
|
||||||
tabRef.current = tab;
|
tabRef.current = tab;
|
||||||
const stateFlushTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
const stateFlushTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
||||||
const toastTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
const toastTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
||||||
@ -875,14 +876,25 @@ export function App(): ReactElement {
|
|||||||
}
|
}
|
||||||
}, [snapshot.session.running]);
|
}, [snapshot.session.running]);
|
||||||
|
|
||||||
// Auto-expand packages that are currently extracting
|
// Auto-expand packages that are currently extracting (only once per extraction cycle)
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const extractingPkgIds: string[] = [];
|
const extractingPkgIds: string[] = [];
|
||||||
|
const currentlyExtracting = new Set<string>();
|
||||||
for (const pkg of packages) {
|
for (const pkg of packages) {
|
||||||
if (collapsedPackages[pkg.id]) {
|
|
||||||
const items = (pkg.itemIds ?? []).map((id) => snapshot.session.items[id]).filter(Boolean);
|
const items = (pkg.itemIds ?? []).map((id) => snapshot.session.items[id]).filter(Boolean);
|
||||||
const isExtracting = items.some((item) => item.fullStatus?.startsWith("Entpacken -") && !item.fullStatus?.includes("Done"));
|
const isExtracting = items.some((item) => item.fullStatus?.startsWith("Entpacken -") && !item.fullStatus?.includes("Done"));
|
||||||
if (isExtracting) extractingPkgIds.push(pkg.id);
|
if (isExtracting) {
|
||||||
|
currentlyExtracting.add(pkg.id);
|
||||||
|
if (collapsedPackages[pkg.id] && !autoExpandedPkgsRef.current.has(pkg.id)) {
|
||||||
|
extractingPkgIds.push(pkg.id);
|
||||||
|
autoExpandedPkgsRef.current.add(pkg.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Reset tracking for packages no longer extracting
|
||||||
|
for (const id of autoExpandedPkgsRef.current) {
|
||||||
|
if (!currentlyExtracting.has(id)) {
|
||||||
|
autoExpandedPkgsRef.current.delete(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (extractingPkgIds.length > 0) {
|
if (extractingPkgIds.length > 0) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user