From bc89010232df2d919d886a734e05d26e6a24102c Mon Sep 17 00:00:00 2001 From: euvre <93761161+euvre@users.noreply.github.com> Date: Wed, 12 Aug 2026 01:10:53 -0700 Subject: [PATCH] fix: persist page size across main page navigation (#17439) --- web/src/hooks/route-hook.ts | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/web/src/hooks/route-hook.ts b/web/src/hooks/route-hook.ts index 3b55d422e3..bc345ca93b 100644 --- a/web/src/hooks/route-hook.ts +++ b/web/src/hooks/route-hook.ts @@ -85,27 +85,36 @@ export const useGetPaginationParams = () => { }; }; +const PageSizeStorageKeyPrefix = 'RAGFlowPageSize:'; + +const getStoredPageSize = (pathname: string) => + Number(localStorage.getItem(`${PageSizeStorageKeyPrefix}${pathname}`)); + export const useSetPaginationParams = () => { const [queryParameters, setSearchParams] = useSearchParams(); - // const newQueryParameters: URLSearchParams = useMemo( - // () => new URLSearchParams(queryParameters.toString()), - // [queryParameters], - // ); + const { pathname } = useLocation(); const setPaginationParams = useCallback( (page: number = 1, pageSize?: number) => { queryParameters.set('page', page.toString()); if (pageSize) { queryParameters.set('size', pageSize.toString()); + // Persist the page size per main page so it survives navigation + // to other pages, where the URL search params are dropped. + localStorage.setItem( + `${PageSizeStorageKeyPrefix}${pathname}`, + pageSize.toString(), + ); } setSearchParams(queryParameters); }, - [setSearchParams, queryParameters], + [setSearchParams, queryParameters, pathname], ); return { setPaginationParams, page: Number(queryParameters.get('page')) || 1, - size: Number(queryParameters.get('size')) || 50, + size: + Number(queryParameters.get('size')) || getStoredPageSize(pathname) || 50, }; };