From 182affb04be8968eb0530b7c15eec1dbca242eca Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Tue, 1 Apr 2025 07:31:08 +0200 Subject: [PATCH] refactor: enhance URL parameter handling in PaginatedSeriesGrid and PaginatedBookGrid components by adding replace option for router navigation --- src/components/library/PaginatedSeriesGrid.tsx | 13 ++++++++++--- src/components/series/PaginatedBookGrid.tsx | 13 ++++++++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/components/library/PaginatedSeriesGrid.tsx b/src/components/library/PaginatedSeriesGrid.tsx index 206ce4e..10050f4 100644 --- a/src/components/library/PaginatedSeriesGrid.tsx +++ b/src/components/library/PaginatedSeriesGrid.tsx @@ -39,7 +39,10 @@ export function PaginatedSeriesGrid({ const { isCompact, itemsPerPage } = useDisplayPreferences(); const { t } = useTranslate(); - const updateUrlParams = async (updates: Record) => { + const updateUrlParams = async ( + updates: Record, + replace: boolean = false + ) => { setIsChangingPage(true); const params = new URLSearchParams(searchParams.toString()); @@ -51,7 +54,11 @@ export function PaginatedSeriesGrid({ } }); - await router.push(`${pathname}?${params.toString()}`); + if (replace) { + await router.replace(`${pathname}?${params.toString()}`); + } else { + await router.push(`${pathname}?${params.toString()}`); + } }; // Reset loading state when series change @@ -67,7 +74,7 @@ export function PaginatedSeriesGrid({ // Apply default filter on initial load useEffect(() => { if (defaultShowOnlyUnread && !searchParams.has("unread")) { - updateUrlParams({ page: "1", unread: "true" }); + updateUrlParams({ page: "1", unread: "true" }, true); } }, [defaultShowOnlyUnread, pathname, router, searchParams]); diff --git a/src/components/series/PaginatedBookGrid.tsx b/src/components/series/PaginatedBookGrid.tsx index e965abb..3343473 100644 --- a/src/components/series/PaginatedBookGrid.tsx +++ b/src/components/series/PaginatedBookGrid.tsx @@ -38,7 +38,10 @@ export function PaginatedBookGrid({ const { isCompact, itemsPerPage } = useDisplayPreferences(); const { t } = useTranslate(); - const updateUrlParams = async (updates: Record) => { + const updateUrlParams = async ( + updates: Record, + replace: boolean = false + ) => { setIsChangingPage(true); const params = new URLSearchParams(searchParams.toString()); @@ -50,7 +53,11 @@ export function PaginatedBookGrid({ } }); - await router.push(`${pathname}?${params.toString()}`); + if (replace) { + await router.replace(`${pathname}?${params.toString()}`); + } else { + await router.push(`${pathname}?${params.toString()}`); + } }; // Reset loading state when books change @@ -66,7 +73,7 @@ export function PaginatedBookGrid({ // Apply default filter on initial load useEffect(() => { if (defaultShowOnlyUnread && !searchParams.has("unread")) { - updateUrlParams({ page: "1", unread: "true" }); + updateUrlParams({ page: "1", unread: "true" }, true); } }, [defaultShowOnlyUnread, pathname, router, searchParams]);