diff --git a/src/app/components/tanstak-table/TanstakTable.tsx b/src/app/components/tanstak-table/TanstakTable.tsx index fba4627..3394f27 100644 --- a/src/app/components/tanstak-table/TanstakTable.tsx +++ b/src/app/components/tanstak-table/TanstakTable.tsx @@ -199,22 +199,6 @@ export default function TanstakFilesTable({ fileType }: { fileType: string }) { placeholderData: (previousData) => previousData // для оптимистичных обновлений }); - const { - data: referralLink - } = useQuery({ - queryKey: ['referralUserStats'], - queryFn: () => { - return fetchReferralUserStats(); - }, - select: (data) => { - if (data?.referralLink) { - return data?.referralLink; - } else { - return null; - } - } - }); - const queryClient = useQueryClient(); // Данные для таблицы @@ -276,26 +260,63 @@ export default function TanstakFilesTable({ fileType }: { fileType: string }) { }); } + + const selectAllHandler = useCallback(() => { + if (!apiResponse?.items?.length) return; + + setSelectedFiles((prev) => { + const allIds = new Set(apiResponse.items.map(item => item.id)); + + const isAllSelected = Array.from(allIds).every(id => prev.has(id)); + + if (isAllSelected) { + const newSet = new Set(prev); + allIds.forEach(id => newSet.delete(id)); + return newSet; + } else { + + return new Set([...prev, ...allIds]); + } + }); + }, [apiResponse]); + + const isAllSelected = useMemo(() => { + if (!apiResponse?.items?.length) return false; + const allIds = new Set(apiResponse.items.map(item => item.id)); + return Array.from(allIds).every(id => selectedFiles.has(id)); + }, [apiResponse, selectedFiles]); + // Определение колонок const columns = useMemo[]>( () => [ { accessorKey: 'selectd', header: ({ column }) => ( -
+
{ + selectAllHandler(); + }} + > - +
), cell: ({ row }) => { return ( -
+
{ + selectHandler(row.original.id); + }} + >