diff --git a/src/app/hooks/react-query/useHistoryView.ts b/src/app/hooks/react-query/useHistoryView.ts index 6538b46..e61fefc 100644 --- a/src/app/hooks/react-query/useHistoryView.ts +++ b/src/app/hooks/react-query/useHistoryView.ts @@ -22,7 +22,7 @@ export interface UseHistoryView { export const useHistoryView = (page: number, size: number) => { return useQuery({ - queryKey: ['violationStatistic'], + queryKey: ['violationStatistic', page, size], queryFn: () => { return fetchHistoryView(page, size) }, @@ -32,6 +32,7 @@ export const useHistoryView = (page: number, size: number) => { } return data; }, - retry: false + retry: false, + placeholderData: (previousData) => previousData // для оптимистичных обновлений }); }; \ No newline at end of file diff --git a/src/app/ui/tracking-page/tracking-history-view.tsx b/src/app/ui/tracking-page/tracking-history-view.tsx index 21f11d1..2455259 100644 --- a/src/app/ui/tracking-page/tracking-history-view.tsx +++ b/src/app/ui/tracking-page/tracking-history-view.tsx @@ -32,7 +32,7 @@ export function TrackingHistoryView() { const tableData = apiResponse?.history || []; const totalItems = apiResponse?.history.length || 0; - const totalPages = Math.ceil(totalItems / pagination.pageSize); + const totalPages = apiResponse?.totalPages || 0; const viewport = useViewport(); @@ -244,6 +244,12 @@ export function TrackingHistoryView() { getPaginationRowModel: getPaginationRowModel(), }); + useEffect(() => { + if (tableData.length === 0 && pagination.pageIndex > 0 && totalPages > 0) { + setPagination(prev => ({ ...prev, pageIndex: Math.max(0, totalPages - 1) })); + } + }, [tableData, pagination.pageIndex, totalPages]); + return (