diff --git a/packages/api/v1/implementation.ts b/packages/api/v1/implementation.ts index bec720812..8f8987b79 100644 --- a/packages/api/v1/implementation.ts +++ b/packages/api/v1/implementation.ts @@ -1050,7 +1050,8 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, { updateField: authenticatedMiddleware(async (args, user, team) => { const { id: documentId, fieldId } = args.params; - const { recipientId, type, pageNumber, pageWidth, pageHeight, pageX, pageY } = args.body; + const { recipientId, type, pageNumber, pageWidth, pageHeight, pageX, pageY, fieldMeta } = + args.body; const document = await getDocumentById({ id: Number(documentId), @@ -1112,6 +1113,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, { pageWidth, pageHeight, requestMetadata: extractNextApiRequestMetadata(args.req), + fieldMeta: fieldMeta ? ZFieldMetaSchema.parse(fieldMeta) : undefined, }); const remappedField = { diff --git a/packages/lib/server-only/field/update-field.ts b/packages/lib/server-only/field/update-field.ts index 5fc415b4b..434d0f651 100644 --- a/packages/lib/server-only/field/update-field.ts +++ b/packages/lib/server-only/field/update-field.ts @@ -65,6 +65,11 @@ export const updateField = async ({ }, }); + const newFieldMeta = { + ...(oldField.fieldMeta as FieldMeta), + ...fieldMeta, + }; + const field = prisma.$transaction(async (tx) => { const updatedField = await tx.field.update({ where: { @@ -78,13 +83,39 @@ export const updateField = async ({ positionY: pageY, width: pageWidth, height: pageHeight, - fieldMeta, + fieldMeta: newFieldMeta, }, include: { Recipient: true, }, }); + const user = await prisma.user.findFirstOrThrow({ + where: { + id: userId, + }, + select: { + id: true, + name: true, + email: true, + }, + }); + + let team: Team | null = null; + + if (teamId) { + team = await prisma.team.findFirst({ + where: { + id: teamId, + members: { + some: { + userId, + }, + }, + }, + }); + } + await tx.documentAuditLog.create({ data: createDocumentAuditLogData({ type: DOCUMENT_AUDIT_LOG_TYPE.FIELD_UPDATED, @@ -108,31 +139,5 @@ export const updateField = async ({ return updatedField; }); - const user = await prisma.user.findFirstOrThrow({ - where: { - id: userId, - }, - select: { - id: true, - name: true, - email: true, - }, - }); - - let team: Team | null = null; - - if (teamId) { - team = await prisma.team.findFirst({ - where: { - id: teamId, - members: { - some: { - userId, - }, - }, - }, - }); - } - return field; };