diff --git a/packages/trpc/server/envelope-router/create-envelope.ts b/packages/trpc/server/envelope-router/create-envelope.ts index c721ad31e..1a5038a10 100644 --- a/packages/trpc/server/envelope-router/create-envelope.ts +++ b/packages/trpc/server/envelope-router/create-envelope.ts @@ -8,6 +8,7 @@ import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-reques import { putPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server'; import { EnvelopeType } from '@prisma/client'; import type { Logger } from 'pino'; +import { match, P } from 'ts-pattern'; import { insertFormValuesInPdf } from '../../../lib/server-only/pdf/insert-form-values-in-pdf'; import { authenticatedProcedure } from '../trpc'; @@ -148,19 +149,11 @@ export const createEnvelopeRouteCaller = async ({ accessAuth: recipient.accessAuth, actionAuth: recipient.actionAuth, fields: recipient.fields?.map((field) => { - let documentDataId: string | undefined; - - if (typeof field.identifier === 'string') { - documentDataId = envelopeItems.find((item) => item.title === field.identifier)?.documentDataId; - } - - if (typeof field.identifier === 'number') { - documentDataId = envelopeItems.at(field.identifier)?.documentDataId; - } - - if (field.identifier === undefined) { - documentDataId = envelopeItems.at(0)?.documentDataId; - } + const documentDataId = match(field.identifier) + .with(P.string, (title) => envelopeItems.find((item) => item.title === title)?.documentDataId) + .with(P.number, (index) => envelopeItems.at(index)?.documentDataId) + .with(undefined, () => envelopeItems.at(0)?.documentDataId) + .exhaustive(); if (!documentDataId) { throw new AppError(AppErrorCode.NOT_FOUND, { diff --git a/packages/trpc/server/envelope-router/sign-envelope-field.ts b/packages/trpc/server/envelope-router/sign-envelope-field.ts index ef1828fee..54f4129a5 100644 --- a/packages/trpc/server/envelope-router/sign-envelope-field.ts +++ b/packages/trpc/server/envelope-router/sign-envelope-field.ts @@ -39,8 +39,8 @@ export const signEnvelopeFieldRoute = procedure const field = await prisma.field.findFirst({ where: { id: fieldId, - recipient: { - ...(recipient.role === RecipientRole.ASSISTANT + recipient: + recipient.role === RecipientRole.ASSISTANT ? { signingStatus: { not: SigningStatus.SIGNED, @@ -52,8 +52,7 @@ export const signEnvelopeFieldRoute = procedure } : { id: recipient.id, - }), - }, + }, }, include: { envelope: { diff --git a/packages/trpc/server/envelope-router/use-envelope.ts b/packages/trpc/server/envelope-router/use-envelope.ts index 769e598fa..608b430d9 100644 --- a/packages/trpc/server/envelope-router/use-envelope.ts +++ b/packages/trpc/server/envelope-router/use-envelope.ts @@ -6,6 +6,7 @@ import { createDocumentFromTemplate } from '@documenso/lib/server-only/template/ import { putNormalizedPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server'; import { formatSigningLink } from '@documenso/lib/utils/recipients'; import { EnvelopeType } from '@prisma/client'; +import { match, P } from 'ts-pattern'; import { authenticatedProcedure } from '../trpc'; import { useEnvelopeMeta, ZUseEnvelopeRequestSchema, ZUseEnvelopeResponseSchema } from './use-envelope.types'; @@ -87,20 +88,11 @@ export const useEnvelopeRoute = authenticatedProcedure // Map custom document data using identifiers const customDocumentDataMapped = customDocumentData?.map((mapping) => { - let documentDataId: string | undefined; - // Find the uploaded file by identifier - if (typeof mapping.identifier === 'string') { - documentDataId = uploadedFiles.find((file) => file.name === mapping.identifier)?.documentDataId; - } - - if (typeof mapping.identifier === 'number') { - documentDataId = uploadedFiles.at(mapping.identifier)?.documentDataId; - } - - if (mapping.identifier === undefined) { - documentDataId = uploadedFiles.at(0)?.documentDataId; - } + const documentDataId = match(mapping.identifier) + .with(P.string, (name) => uploadedFiles.find((file) => file.name === name)?.documentDataId) + .with(P.number, (index) => uploadedFiles.at(index)?.documentDataId) + .exhaustive(); if (!documentDataId) { throw new AppError(AppErrorCode.NOT_FOUND, {