import { Trans } from '@lingui/macro'; import type { Team, TeamEmail, TeamMemberRole } from '@prisma/client'; import { Link } from 'react-router'; import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app'; import type { PeriodSelectorValue } from '@documenso/lib/server-only/document/find-documents'; import { parseToIntegerArray } from '@documenso/lib/utils/params'; import { formatDocumentsPath } from '@documenso/lib/utils/teams'; import { isExtendedDocumentStatus } from '@documenso/prisma/guards/is-extended-document-status'; import { ExtendedDocumentStatus } from '@documenso/prisma/types/extended-document-status'; import { trpc } from '@documenso/trpc/react'; import { Avatar, AvatarFallback, AvatarImage } from '@documenso/ui/primitives/avatar'; import { Tabs, TabsList, TabsTrigger } from '@documenso/ui/primitives/tabs'; import { DocumentSearch } from '~/components/(dashboard)/document-search/document-search'; import { PeriodSelector } from '~/components/(dashboard)/period-selector/period-selector'; import { isPeriodSelectorValue } from '~/components/(dashboard)/period-selector/types'; import { DocumentUploadDropzone } from '~/components/document/document-upload'; import { DocumentStatus } from '~/components/formatter/document-status'; import { DocumentsTable } from '~/components/tables/documents-table'; import { DocumentsTableEmptyState } from '~/components/tables/documents-table-empty-state'; import { DocumentsTableSenderFilter } from '~/components/tables/documents-table-sender-filter'; import { useAuth } from '~/providers/auth'; export interface DocumentsPageViewProps { searchParams?: { status?: ExtendedDocumentStatus; period?: PeriodSelectorValue; page?: string; perPage?: string; senderIds?: string; search?: string; }; team?: Team & { teamEmail?: TeamEmail | null } & { currentTeamMember?: { role: TeamMemberRole } }; } export const DocumentsPageView = ({ searchParams = {}, team }: DocumentsPageViewProps) => { const { user } = useAuth(); const status = isExtendedDocumentStatus(searchParams.status) ? searchParams.status : 'ALL'; const period = isPeriodSelectorValue(searchParams.period) ? searchParams.period : ''; const page = Number(searchParams.page) || 1; const perPage = Number(searchParams.perPage) || 20; const senderIds = parseToIntegerArray(searchParams.senderIds ?? ''); const search = searchParams.search || ''; const currentTeam = team ? { id: team.id, url: team.url, teamEmail: team.teamEmail?.email } : undefined; const currentTeamMemberRole = team?.currentTeamMember?.role; // const results = await findDocuments({ // status, // orderBy: { // column: 'createdAt', // direction: 'desc', // }, // page, // perPage, // period, // senderIds, // query: search, // }); const { data, isLoading, isLoadingError } = trpc.document.findDocuments.useQuery({ page, perPage, }); const getTabHref = (value: typeof status) => { const params = new URLSearchParams(searchParams); params.set('status', value); if (params.has('page')) { params.delete('page'); } return `${formatDocumentsPath(team?.url)}?${params.toString()}`; }; return (
{team && ( {team.avatarImageId && ( )} {team.name.slice(0, 1)} )}

Documents

{[ ExtendedDocumentStatus.INBOX, ExtendedDocumentStatus.PENDING, ExtendedDocumentStatus.COMPLETED, ExtendedDocumentStatus.DRAFT, ExtendedDocumentStatus.ALL, ].map((value) => ( {value !== ExtendedDocumentStatus.ALL && ( todo )} ))} {team && }
{data && data.count === 0 ? ( ) : ( )}
); };