import Link from 'next/link'; import { notFound } from 'next/navigation'; import { CheckCircle2, Clock8 } from 'lucide-react'; import { match } from 'ts-pattern'; import { getDocumentAndSenderByToken } from '@documenso/lib/server-only/document/get-document-by-token'; import { getFieldsForToken } from '@documenso/lib/server-only/field/get-fields-for-token'; import { getRecipientByToken } from '@documenso/lib/server-only/recipient/get-recipient-by-token'; import { DocumentStatus, FieldType } from '@documenso/prisma/client'; import { DocumentDownloadButton } from '@documenso/ui/components/document/document-download-button'; import { SigningCard } from '@documenso/ui/components/signing-card'; import signingCelebration from '~/assets/signing-celebration.png'; import { ShareButton } from './share-button'; export type CompletedSigningPageProps = { params: { token?: string; }; }; export default async function CompletedSigningPage({ params: { token }, }: CompletedSigningPageProps) { if (!token) { return notFound(); } const document = await getDocumentAndSenderByToken({ token, }).catch(() => null); if (!document || !document.documentData) { return notFound(); } const { documentData } = document; const [fields, recipient] = await Promise.all([ getFieldsForToken({ token }), getRecipientByToken({ token }).catch(() => null), ]); if (!recipient) { return notFound(); } const recipientName = recipient.name || fields.find((field) => field.type === FieldType.NAME)?.customText || recipient.email; return (
Everyone has signed! You will receive an Email copy of the signed document.
)) .otherwise(() => (You will receive an Email copy of the signed document once everyone has signed.
))}Want to send slick signing links like this one?{' '} Check out Documenso.