From b01eaceeb8ce57a1d662fe81890b2b9d448c389d Mon Sep 17 00:00:00 2001 From: Catalin Pit <25515812+catalinpit@users.noreply.github.com> Date: Mon, 27 Jan 2025 16:36:53 +0200 Subject: [PATCH] feat: allow same signer email multiple times --- .../document-flow/add-signers.types.ts | 46 +++++++------------ 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/packages/ui/primitives/document-flow/add-signers.types.ts b/packages/ui/primitives/document-flow/add-signers.types.ts index 543af0f36..97a8ad297 100644 --- a/packages/ui/primitives/document-flow/add-signers.types.ts +++ b/packages/ui/primitives/document-flow/add-signers.types.ts @@ -6,34 +6,22 @@ import { ZRecipientActionAuthTypesSchema } from '@documenso/lib/types/document-a import { ZMapNegativeOneToUndefinedSchema } from './add-settings.types'; import { DocumentSigningOrder, RecipientRole } from '.prisma/client'; -export const ZAddSignersFormSchema = z - .object({ - signers: z.array( - z.object({ - formId: z.string().min(1), - nativeId: z.number().optional(), - email: z - .string() - .email({ message: msg`Invalid email`.id }) - .min(1), - name: z.string(), - role: z.nativeEnum(RecipientRole), - signingOrder: z.number().optional(), - actionAuth: ZMapNegativeOneToUndefinedSchema.pipe( - ZRecipientActionAuthTypesSchema.optional(), - ), - }), - ), - signingOrder: z.nativeEnum(DocumentSigningOrder), - }) - .refine( - (schema) => { - const emails = schema.signers.map((signer) => signer.email.toLowerCase()); - - return new Set(emails).size === emails.length; - }, - // Dirty hack to handle errors when .root is populated for an array type - { message: msg`Signers must have unique emails`.id, path: ['signers__root'] }, - ); +export const ZAddSignersFormSchema = z.object({ + signers: z.array( + z.object({ + formId: z.string().min(1), + nativeId: z.number().optional(), + email: z + .string() + .email({ message: msg`Invalid email`.id }) + .min(1), + name: z.string(), + role: z.nativeEnum(RecipientRole), + signingOrder: z.number().optional(), + actionAuth: ZMapNegativeOneToUndefinedSchema.pipe(ZRecipientActionAuthTypesSchema.optional()), + }), + ), + signingOrder: z.nativeEnum(DocumentSigningOrder), +}); export type TAddSignersFormSchema = z.infer;