fix: tidy document invite email render logic (#1597)

Updates one of our confusing ternaries to use `ts-pattern` for rendering
the conditional blocks making it easy to follow the logic occurring.
This commit is contained in:
Lucas Smith
2025-01-28 15:18:12 +11:00
committed by David Nguyen
parent b03c5ab1a7
commit 84b193d99c

View File

@@ -2,7 +2,7 @@ import { useMemo } from 'react';
import { useLingui } from '@lingui/react'; import { useLingui } from '@lingui/react';
import { Trans } from '@lingui/react/macro'; import { Trans } from '@lingui/react/macro';
import { match } from 'ts-pattern'; import { P, match } from 'ts-pattern';
import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles'; import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
import { RecipientRole } from '@documenso/prisma/client'; import { RecipientRole } from '@documenso/prisma/client';
@@ -40,11 +40,9 @@ export const TemplateDocumentInvite = ({
const rejectDocumentLink = useMemo(() => { const rejectDocumentLink = useMemo(() => {
const url = new URL(signDocumentLink); const url = new URL(signDocumentLink);
url.searchParams.set('reject', 'true'); url.searchParams.set('reject', 'true');
return url.toString(); return url.toString();
}, []); }, [signDocumentLink]);
return ( return (
<> <>
@@ -52,31 +50,32 @@ export const TemplateDocumentInvite = ({
<Section> <Section>
<Text className="text-primary mx-auto mb-0 max-w-[80%] text-center text-lg font-semibold"> <Text className="text-primary mx-auto mb-0 max-w-[80%] text-center text-lg font-semibold">
{selfSigner ? ( {match({ selfSigner, isTeamInvite, includeSenderDetails, teamName })
.with({ selfSigner: true }, () => (
<Trans> <Trans>
Please {_(actionVerb).toLowerCase()} your document Please {_(actionVerb).toLowerCase()} your document
<br />"{documentName}" <br />"{documentName}"
</Trans> </Trans>
) : isTeamInvite ? ( ))
<> .with({ isTeamInvite: true, includeSenderDetails: true, teamName: P.string }, () => (
{includeSenderDetails ? (
<Trans> <Trans>
{inviterName} on behalf of "{teamName}" has invited you to{' '} {inviterName} on behalf of "{teamName}" has invited you to{' '}
{_(actionVerb).toLowerCase()} {_(actionVerb).toLowerCase()}
<br />"{documentName}"
</Trans> </Trans>
) : ( ))
.with({ isTeamInvite: true, teamName: P.string }, () => (
<Trans> <Trans>
{teamName} has invited you to {_(actionVerb).toLowerCase()} {teamName} has invited you to {_(actionVerb).toLowerCase()}
</Trans>
)}
<br />"{documentName}" <br />"{documentName}"
</> </Trans>
) : ( ))
.otherwise(() => (
<Trans> <Trans>
{inviterName} has invited you to {_(actionVerb).toLowerCase()} {inviterName} has invited you to {_(actionVerb).toLowerCase()}
<br />"{documentName}" <br />"{documentName}"
</Trans> </Trans>
)} ))}
</Text> </Text>
<Text className="my-1 text-center text-base text-slate-400"> <Text className="my-1 text-center text-base text-slate-400">