import { useMemo } from 'react';
import { Trans } from '@lingui/macro';
import { useLingui } from '@lingui/react';
import { match } from 'ts-pattern';
import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
import { RecipientRole } from '@documenso/prisma/client';
import { Button, Section, Text } from '../components';
import { TemplateDocumentImage } from './template-document-image';
export interface TemplateDocumentInviteProps {
inviterName: string;
inviterEmail: string;
documentName: string;
signDocumentLink: string;
assetBaseUrl: string;
role: RecipientRole;
selfSigner: boolean;
isTeamInvite: boolean;
teamName?: string;
includeSenderDetails?: boolean;
}
export const TemplateDocumentInvite = ({
inviterName,
documentName,
signDocumentLink,
assetBaseUrl,
role,
selfSigner,
isTeamInvite,
teamName,
includeSenderDetails,
}: TemplateDocumentInviteProps) => {
const { _ } = useLingui();
const { actionVerb } = RECIPIENT_ROLES_DESCRIPTION[role];
const rejectDocumentLink = useMemo(() => {
const url = new URL(signDocumentLink);
url.searchParams.set('reject', 'true');
return url.toString();
}, []);
return (
<>
{selfSigner ? (
Please {_(actionVerb).toLowerCase()} your document
"{documentName}"
) : isTeamInvite ? (
<>
{includeSenderDetails ? (
{inviterName} on behalf of "{teamName}" has invited you to{' '}
{_(actionVerb).toLowerCase()}
) : (
{teamName} has invited you to {_(actionVerb).toLowerCase()}
)}
"{documentName}"
>
) : (
{inviterName} has invited you to {_(actionVerb).toLowerCase()}
"{documentName}"
)}
{match(role)
.with(RecipientRole.SIGNER, () => Continue by signing the document.)
.with(RecipientRole.VIEWER, () => Continue by viewing the document.)
.with(RecipientRole.APPROVER, () => Continue by approving the document.)
.with(RecipientRole.CC, () => '')
.exhaustive()}
>
);
};
export default TemplateDocumentInvite;