Refine external signing flow and mobile PDF placement

This commit is contained in:
2026-04-08 23:45:47 -05:00
parent f1bfa5aafc
commit 331dd40e76
3 changed files with 78 additions and 39 deletions
@@ -183,12 +183,6 @@ const addInviteesToFlow = async (documentId, { invitees }, ownerUserId, context
throw error;
}
if (flow.status === 'completed') {
const error = new Error('La cadena ya fue completada. Crea una nueva si necesitas más firmas.');
error.statusCode = 409;
throw error;
}
const { document } = await ensureOwnerCanInvite(documentId, ownerUserId);
const existingInvitees = await invitationsRepository.listInvitationsByFlow(flow.id);
const currentCount = existingInvitees.length;
@@ -198,11 +192,26 @@ const addInviteesToFlow = async (documentId, { invitees }, ownerUserId, context
throw error;
}
const existingEmails = new Set(existingInvitees.map((item) => String(item.invitee_email).toLowerCase()));
const normalizedInvitees = invitees.map((invitee) => ({
name: invitee.name.trim(),
email: invitee.email.trim().toLowerCase(),
}));
const payloadEmails = new Set();
for (const invitee of normalizedInvitees) {
if (payloadEmails.has(invitee.email)) {
const error = new Error(`El correo ${invitee.email} está repetido en la solicitud.`);
error.statusCode = 409;
throw error;
}
payloadEmails.add(invitee.email);
}
const existingEmails = new Set(
flow.status === 'completed'
? []
: existingInvitees.map((item) => String(item.invitee_email).toLowerCase())
);
for (const invitee of normalizedInvitees) {
if (existingEmails.has(invitee.email)) {