From 358ba2dd6f477de5ba931dd5ae1be3752d640dbf Mon Sep 17 00:00:00 2001 From: Catalin Pit Date: Fri, 7 Nov 2025 14:10:46 +0200 Subject: [PATCH] chore: update envelope handling and improve field positioning in PDF processing --- .../lib/server-only/envelope/create-envelope.ts | 12 ++++++++---- packages/lib/server-only/pdf/auto-place-fields.ts | 12 ++++++------ packages/lib/server-only/pdf/helpers.ts | 15 ++++++++++----- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/packages/lib/server-only/envelope/create-envelope.ts b/packages/lib/server-only/envelope/create-envelope.ts index f13ae1104..289310739 100644 --- a/packages/lib/server-only/envelope/create-envelope.ts +++ b/packages/lib/server-only/envelope/create-envelope.ts @@ -35,6 +35,7 @@ import { getFileServerSide } from '../../universal/upload/get-file.server'; import { putPdfFileServerSide } from '../../universal/upload/put-file.server'; import { extractDerivedDocumentMeta } from '../../utils/document'; import { createDocumentAuthOptions, createRecipientAuthOptions } from '../../utils/document-auth'; +import type { EnvelopeIdOptions } from '../../utils/envelope'; import { buildTeamWhereQuery } from '../../utils/teams'; import { incrementDocumentId, incrementTemplateId } from '../envelope/increment-id'; import { getTeamSettings } from '../team/get-team-settings'; @@ -427,16 +428,19 @@ export const createEnvelope = async ({ ? await makeNormalizedPdf(Buffer.from(buffer)) : Buffer.from(buffer); + const envelopeOptions: EnvelopeIdOptions = { + type: 'envelopeId', + id: createdEnvelope.id, + }; + await insertFieldsFromPlaceholdersInPDF( pdfToProcess, userId, teamId, - { - type: 'envelopeId', - id: createdEnvelope.id, - }, + envelopeOptions, requestMetadata, envelopeItem.id, + createdEnvelope.recipients, ); } diff --git a/packages/lib/server-only/pdf/auto-place-fields.ts b/packages/lib/server-only/pdf/auto-place-fields.ts index 9b16dd953..91ffd9a81 100644 --- a/packages/lib/server-only/pdf/auto-place-fields.ts +++ b/packages/lib/server-only/pdf/auto-place-fields.ts @@ -51,9 +51,9 @@ type PlaceholderInfo = { type FieldToCreate = TFieldAndMeta & { envelopeItemId?: string; recipientId: number; - pageNumber: number; - pageX: number; - pageY: number; + page: number; + positionX: number; + positionY: number; width: number; height: number; }; @@ -327,9 +327,9 @@ export const insertFieldsFromPlaceholdersInPDF = async ( ...placeholder.fieldAndMeta, envelopeItemId, recipientId: recipient.id, - pageNumber: placeholder.page, - pageX: xPercent, - pageY: yPercent, + page: placeholder.page, + positionX: xPercent, + positionY: yPercent, width: widthPercent, height: finalHeightPercent, }); diff --git a/packages/lib/server-only/pdf/helpers.ts b/packages/lib/server-only/pdf/helpers.ts index d20730dc2..70f9153f3 100644 --- a/packages/lib/server-only/pdf/helpers.ts +++ b/packages/lib/server-only/pdf/helpers.ts @@ -4,8 +4,7 @@ import type { Recipient } from '@prisma/client'; import { match } from 'ts-pattern'; import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error'; -import { createDocumentRecipients } from '@documenso/lib/server-only/recipient/create-document-recipients'; -import { createTemplateRecipients } from '@documenso/lib/server-only/recipient/create-template-recipients'; +import { createEnvelopeRecipients } from '@documenso/lib/server-only/recipient/create-envelope-recipients'; import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata'; import { mapSecondaryIdToTemplateId } from '@documenso/lib/utils/envelope'; import type { EnvelopeIdOptions } from '@documenso/lib/utils/envelope'; @@ -229,7 +228,7 @@ export const createRecipientsFromPlaceholders = async ( id: envelope.id, }; - const { recipients } = await createDocumentRecipients({ + const { recipients } = await createEnvelopeRecipients({ userId, teamId, id: envelopeId, @@ -242,11 +241,17 @@ export const createRecipientsFromPlaceholders = async ( .with(EnvelopeType.TEMPLATE, async () => { const templateId = mapSecondaryIdToTemplateId(envelope.secondaryId ?? ''); - const { recipients } = await createTemplateRecipients({ + const envelopeId: EnvelopeIdOptions = { + type: 'templateId', + id: templateId, + }; + + const { recipients } = await createEnvelopeRecipients({ userId, teamId, - templateId, + id: envelopeId, recipients: recipientsToCreateFiltered, + requestMetadata, }); return recipients;