Keep manually collapsed packages closed
This commit is contained in:
parent
abcedb339c
commit
2066d0ad26
@ -1324,6 +1324,7 @@ export function App(): ReactElement {
|
|||||||
snapshotRef.current = snapshot;
|
snapshotRef.current = snapshot;
|
||||||
const tabRef = useRef(tab);
|
const tabRef = useRef(tab);
|
||||||
const autoExpandedPkgsRef = useRef(new Set<string>());
|
const autoExpandedPkgsRef = useRef(new Set<string>());
|
||||||
|
const manualCollapsedPkgsRef = 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);
|
||||||
@ -1827,6 +1828,11 @@ export function App(): ReactElement {
|
|||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (const packageId of Array.from(manualCollapsedPkgsRef.current)) {
|
||||||
|
if (!snapshot.session.packages[packageId]) {
|
||||||
|
manualCollapsedPkgsRef.current.delete(packageId);
|
||||||
|
}
|
||||||
|
}
|
||||||
return changed ? next : prev;
|
return changed ? next : prev;
|
||||||
});
|
});
|
||||||
}, [downloadsTabActive, packageOrderKey, snapshot.session.packageOrder, snapshot.session.packages, totalPackageCount]);
|
}, [downloadsTabActive, packageOrderKey, snapshot.session.packageOrder, snapshot.session.packages, totalPackageCount]);
|
||||||
@ -1874,7 +1880,9 @@ export function App(): ReactElement {
|
|||||||
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) {
|
if (isExtracting) {
|
||||||
currentlyExtracting.add(pkg.id);
|
currentlyExtracting.add(pkg.id);
|
||||||
if (collapsedPackages[pkg.id] && !autoExpandedPkgsRef.current.has(pkg.id)) {
|
if (collapsedPackages[pkg.id]
|
||||||
|
&& !manualCollapsedPkgsRef.current.has(pkg.id)
|
||||||
|
&& !autoExpandedPkgsRef.current.has(pkg.id)) {
|
||||||
extractingPkgIds.push(pkg.id);
|
extractingPkgIds.push(pkg.id);
|
||||||
autoExpandedPkgsRef.current.add(pkg.id);
|
autoExpandedPkgsRef.current.add(pkg.id);
|
||||||
}
|
}
|
||||||
@ -2972,7 +2980,16 @@ export function App(): ReactElement {
|
|||||||
}, [showToast]);
|
}, [showToast]);
|
||||||
|
|
||||||
const onPackageToggleCollapse = useCallback((packageId: string): void => {
|
const onPackageToggleCollapse = useCallback((packageId: string): void => {
|
||||||
setCollapsedPackages((prev) => ({ ...prev, [packageId]: !(prev[packageId] ?? false) }));
|
setCollapsedPackages((prev) => {
|
||||||
|
const nextCollapsed = !(prev[packageId] ?? false);
|
||||||
|
if (nextCollapsed) {
|
||||||
|
manualCollapsedPkgsRef.current.add(packageId);
|
||||||
|
} else {
|
||||||
|
manualCollapsedPkgsRef.current.delete(packageId);
|
||||||
|
autoExpandedPkgsRef.current.delete(packageId);
|
||||||
|
}
|
||||||
|
return { ...prev, [packageId]: nextCollapsed };
|
||||||
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const onPackageCancel = useCallback((packageId: string): void => {
|
const onPackageCancel = useCallback((packageId: string): void => {
|
||||||
@ -5327,7 +5344,15 @@ export function App(): ReactElement {
|
|||||||
setCollapsedPackages((prev) => {
|
setCollapsedPackages((prev) => {
|
||||||
const next: Record<string, boolean> = { ...prev };
|
const next: Record<string, boolean> = { ...prev };
|
||||||
const targetState = !allPackagesCollapsed;
|
const targetState = !allPackagesCollapsed;
|
||||||
for (const pkg of packages) { next[pkg.id] = targetState; }
|
for (const pkg of packages) {
|
||||||
|
next[pkg.id] = targetState;
|
||||||
|
if (targetState) {
|
||||||
|
manualCollapsedPkgsRef.current.add(pkg.id);
|
||||||
|
} else {
|
||||||
|
manualCollapsedPkgsRef.current.delete(pkg.id);
|
||||||
|
autoExpandedPkgsRef.current.delete(pkg.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
return next;
|
return next;
|
||||||
});
|
});
|
||||||
}}>{allPackagesCollapsed ? "Ausklappen" : "Einklappen"}</button>
|
}}>{allPackagesCollapsed ? "Ausklappen" : "Einklappen"}</button>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user