import { useEffect, useMemo, useState } from 'react'; import { msg } from '@lingui/core/macro'; import { useLingui } from '@lingui/react'; import { useSearchParams } from 'react-router'; import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-update-search-params'; import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app'; import { ZUrlSearchParamsSchema } from '@documenso/lib/types/search-params'; import { trpc } from '@documenso/trpc/react'; import { AvatarWithText } from '@documenso/ui/primitives/avatar'; import type { DataTableColumnDef } from '@documenso/ui/primitives/data-table'; import { DataTable } from '@documenso/ui/primitives/data-table'; import { DataTablePagination } from '@documenso/ui/primitives/data-table-pagination'; import { Skeleton } from '@documenso/ui/primitives/skeleton'; import { TableCell } from '@documenso/ui/primitives/table'; import { TeamCheckoutCreateDialog } from '~/components/dialogs/team-checkout-create-dialog'; import { UserSettingsPendingTeamsTableActions } from './user-settings-pending-teams-table-actions'; export const UserSettingsPendingTeamsDataTable = () => { const { _, i18n } = useLingui(); const [searchParams] = useSearchParams(); const updateSearchParams = useUpdateSearchParams(); const parsedSearchParams = ZUrlSearchParamsSchema.parse(Object.fromEntries(searchParams ?? [])); const [checkoutPendingTeamId, setCheckoutPendingTeamId] = useState(null); const { data, isLoading, isLoadingError } = trpc.team.findTeamsPending.useQuery( { query: parsedSearchParams.query, page: parsedSearchParams.page, perPage: parsedSearchParams.perPage, }, { placeholderData: (previousData) => previousData, }, ); const onPaginationChange = (page: number, perPage: number) => { updateSearchParams({ page, perPage, }); }; const results = data ?? { data: [], perPage: 10, currentPage: 1, totalPages: 1, }; const columns = useMemo(() => { return [ { header: _(msg`Team`), accessorKey: 'name', cell: ({ row }) => ( {row.original.name} } secondaryText={`${NEXT_PUBLIC_WEBAPP_URL()}/t/${row.original.url}`} /> ), }, { header: _(msg`Created on`), accessorKey: 'createdAt', cell: ({ row }) => i18n.date(row.original.createdAt), }, { id: 'actions', cell: ({ row }) => ( ), }, ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[]; }, []); useEffect(() => { const searchParamCheckout = searchParams?.get('checkout'); if (searchParamCheckout && !isNaN(parseInt(searchParamCheckout))) { setCheckoutPendingTeamId(parseInt(searchParamCheckout)); updateSearchParams({ checkout: null }); } }, [searchParams, updateSearchParams]); return ( <>
), }} > {(table) => }
setCheckoutPendingTeamId(null)} /> ); };