From d1674add90e437fd2ef21b45c7374bf3b2f99a6b Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 22 Apr 2026 21:24:05 +0200 Subject: [PATCH] fix: Stop MapPage pagination resetting on every data refresh Remove 'bans' from the useEffect dependency array that resets pagination. Since 'bans' changes with every background data refresh (new array reference), the page was being reset to 1 every 30 seconds, making the table unusable for pagination beyond the first page. Add a separate effect that clamps the current page to totalPages when the data shrinks below the current page offset (edge case when filtered results are fewer than displayed page). Fixes TASK-BUG-03. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- frontend/src/pages/MapPage.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/MapPage.tsx b/frontend/src/pages/MapPage.tsx index cc5483c..997d23a 100644 --- a/frontend/src/pages/MapPage.tsx +++ b/frontend/src/pages/MapPage.tsx @@ -151,7 +151,7 @@ export function MapPage(): React.JSX.Element { useEffect(() => { setPage(1); - }, [range, originFilter, selectedCountry, bans, pageSize]); + }, [range, originFilter, selectedCountry, pageSize]); /** Bans visible in the companion table (filtered by selected country). */ const visibleBans = useMemo(() => { @@ -164,6 +164,14 @@ export function MapPage(): React.JSX.Element { : null; const totalPages = Math.max(1, Math.ceil(visibleBans.length / pageSize)); + + // Clamp page to totalPages when data shrinks below current page offset + useEffect(() => { + if (page > totalPages) { + setPage(totalPages); + } + }, [totalPages, page]); + const hasPrev = page > 1; const hasNext = page < totalPages;