From ac144a36a84b6e1e5d63b00eefeb5af8fe6ec019 Mon Sep 17 00:00:00 2001 From: Linrador <68631622+Linrador@users.noreply.github.com> Date: Mon, 18 May 2026 15:32:18 +0200 Subject: [PATCH] fixed gallery display bug --- .../src/components/ui/FinishedDownloads.tsx | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/ui/FinishedDownloads.tsx b/frontend/src/components/ui/FinishedDownloads.tsx index f044c0b..a2ea06b 100644 --- a/frontend/src/components/ui/FinishedDownloads.tsx +++ b/frontend/src/components/ui/FinishedDownloads.tsx @@ -2281,6 +2281,33 @@ export default function FinishedDownloads({ DEFAULT_GALLERY_PAGE_SIZE ) + const lastGalleryScaleIndexRef = useRef(galleryCardScaleIndex) + + const handleGalleryRecommendedPageSizeChange = useCallback((rawSize: number) => { + const rounded = Math.round(Number(rawSize)) + if (!Number.isFinite(rounded) || rounded <= 0) return + + const next = Math.max(1, Math.min(24, rounded)) + + setGalleryPageSize((current) => { + const scaleChanged = lastGalleryScaleIndexRef.current !== galleryCardScaleIndex + + if (scaleChanged) { + lastGalleryScaleIndexRef.current = galleryCardScaleIndex + return next + } + + // Wichtig: + // Nach Page-Wechsel/ResizeObserver kann kurz 8 statt 10 gemeldet werden. + // Nicht automatisch verkleinern, sonst verschwinden bereits geladene Cards. + if (next < current) { + return current + } + + return next + }) + }, [galleryCardScaleIndex]) + const effectivePageSize = view === 'gallery' ? galleryPageSize @@ -2535,8 +2562,7 @@ export default function FinishedDownloads({ showOnlyCorrupt, ]) - const finishedDownloadsLoading = - allDoneJobsLoading && globalFilterActive && allDoneJobs === null + const finishedDownloadsLoading = allDoneJobsLoading const totalItemsForPagination = finishedDownloadsLoading @@ -5562,7 +5588,7 @@ export default function FinishedDownloads({ forcePreviewMuted={forcePreviewMuted} cardScale={galleryCardScale} renderPostworkBadge={renderClickablePostworkBadge} - onRecommendedPageSizeChange={setGalleryPageSize} + onRecommendedPageSizeChange={handleGalleryRecommendedPageSizeChange} assetNonce={assetNonce ?? 0} renderIntegrityBadge={renderIntegrityBadge} renderRatingOverlay={renderRatingOverlay}