import { useMemo, useState } from 'react' import { useQuery } from '@tanstack/react-query' import { type SortingState, type VisibilityState, flexRender, getCoreRowModel, getPaginationRowModel, getSortedRowModel, useReactTable, } from '@tanstack/react-table' import { useMediaQuery } from '@/hooks' import { useTranslation } from 'react-i18next' import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table' import { DataTablePagination, TableSkeleton, TableEmpty, MobileCardList, } from '@/components/data-table' import { PageFooterPortal } from '@/components/layout' import { getAdminPlans } from '../api' import { useSubscriptionsColumns } from './subscriptions-columns' import { useSubscriptions } from './subscriptions-provider' export function SubscriptionsTable() { const { t } = useTranslation() const columns = useSubscriptionsColumns() const { refreshTrigger } = useSubscriptions() const isMobile = useMediaQuery('(max-width: 640px)') const [sorting, setSorting] = useState([]) const [columnVisibility, setColumnVisibility] = useState({}) const { data, isLoading } = useQuery({ queryKey: ['admin-subscription-plans', refreshTrigger], queryFn: async () => { const result = await getAdminPlans() return result.data || [] }, placeholderData: (prev) => prev, }) const plans = useMemo(() => data || [], [data]) const table = useReactTable({ data: plans, columns, state: { sorting, columnVisibility }, onSortingChange: setSorting, onColumnVisibilityChange: setColumnVisibility, getCoreRowModel: getCoreRowModel(), getPaginationRowModel: getPaginationRowModel(), getSortedRowModel: getSortedRowModel(), }) return ( <>
{isMobile ? ( ) : (
{table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => ( {header.isPlaceholder ? null : flexRender( header.column.columnDef.header, header.getContext() )} ))} ))} {isLoading ? ( ) : table.getRowModel().rows.length === 0 ? ( ) : ( table.getRowModel().rows.map((row) => ( {row.getVisibleCells().map((cell) => ( {flexRender( cell.column.columnDef.cell, cell.getContext() )} ))} )) )}
)}
) }