chore: remove unique email constraint

This commit is contained in:
Catalin Pit
2025-02-07 15:22:50 +02:00
parent 64964f420a
commit bfcbaea3a9

View File

@ -47,50 +47,22 @@ import { Tooltip, TooltipContent, TooltipTrigger } from '@documenso/ui/primitive
import type { Toast } from '@documenso/ui/primitives/use-toast'; import type { Toast } from '@documenso/ui/primitives/use-toast';
import { useToast } from '@documenso/ui/primitives/use-toast'; import { useToast } from '@documenso/ui/primitives/use-toast';
const ZAddRecipientsForNewDocumentSchema = z const ZAddRecipientsForNewDocumentSchema = z.object({
.object({ distributeDocument: z.boolean(),
distributeDocument: z.boolean(), useCustomDocument: z.boolean().default(false),
useCustomDocument: z.boolean().default(false), customDocumentData: z
customDocumentData: z .any()
.any() .refine((data) => data instanceof File || data === undefined)
.refine((data) => data instanceof File || data === undefined) .optional(),
.optional(), recipients: z.array(
recipients: z.array( z.object({
z.object({ id: z.number(),
id: z.number(), email: z.string().email(),
email: z.string().email(), name: z.string(),
name: z.string(), signingOrder: z.number().optional(),
signingOrder: z.number().optional(), }),
}), ),
), });
})
// Display exactly which rows are duplicates.
.superRefine((items, ctx) => {
const uniqueEmails = new Map<string, number>();
for (const [index, recipients] of items.recipients.entries()) {
const email = recipients.email.toLowerCase();
const firstFoundIndex = uniqueEmails.get(email);
if (firstFoundIndex === undefined) {
uniqueEmails.set(email, index);
continue;
}
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: 'Emails must be unique',
path: ['recipients', index, 'email'],
});
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: 'Emails must be unique',
path: ['recipients', firstFoundIndex, 'email'],
});
}
});
type TAddRecipientsForNewDocumentSchema = z.infer<typeof ZAddRecipientsForNewDocumentSchema>; type TAddRecipientsForNewDocumentSchema = z.infer<typeof ZAddRecipientsForNewDocumentSchema>;