From ec5575dce22012fc0f35a43d580b899fb5e4bd64 Mon Sep 17 00:00:00 2001 From: Jimmy Ben Klieve Date: Wed, 31 Dec 2025 09:39:13 +0800 Subject: [PATCH] fix(admin-ui): pagination auto reset to first page when after refetching data (#12339) ### What problem does this PR solve? Admin user enabling/disabling a user will causing user list reset to first page ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- web/src/pages/admin/users.tsx | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/web/src/pages/admin/users.tsx b/web/src/pages/admin/users.tsx index f7066c667..8a8304061 100644 --- a/web/src/pages/admin/users.tsx +++ b/web/src/pages/admin/users.tsx @@ -1,4 +1,4 @@ -import { useMemo, useState } from 'react'; +import { useLayoutEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'umi'; @@ -12,7 +12,12 @@ import { useReactTable, } from '@tanstack/react-table'; -import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; +import { + keepPreviousData, + useMutation, + useQuery, + useQueryClient, +} from '@tanstack/react-query'; import { LucideClipboardList, @@ -125,12 +130,14 @@ function AdminUserManagement() { queryFn: async () => (await listRoles()).data.data.roles, enabled: IS_ENTERPRISE, retry: false, + placeholderData: keepPreviousData, }); const { data: usersList } = useQuery({ queryKey: ['admin/listUsers'], queryFn: async () => (await listUsers()).data.data, retry: false, + placeholderData: keepPreviousData, }); // Delete user mutation @@ -354,8 +361,16 @@ function AdminUserManagement() { getFilteredRowModel: getFilteredRowModel(), getSortedRowModel: getSortedRowModel(), getPaginationRowModel: getPaginationRowModel(), + + autoResetPageIndex: false, }); + useLayoutEffect(() => { + if (table.getState().pagination.pageIndex > table.getPageCount()) { + table.setPageIndex(Math.max(0, table.getPageCount() - 1)); + } + }, [usersList, table]); + return ( <> @@ -538,7 +553,7 @@ function AdminUserManagement() { {