mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 08:13:56 +10:00
fix: timeout issues
This commit is contained in:
@ -89,77 +89,83 @@ export const createSinglePlayerDocument = async (
|
|||||||
|
|
||||||
const pdfBytes = await doc.save();
|
const pdfBytes = await doc.save();
|
||||||
|
|
||||||
const documentToken = await prisma.$transaction(async (tx) => {
|
const documentToken = await prisma.$transaction(
|
||||||
const documentToken = nanoid();
|
async (tx) => {
|
||||||
|
const documentToken = nanoid();
|
||||||
|
|
||||||
// Fetch service user who will be the owner of the document.
|
// Fetch service user who will be the owner of the document.
|
||||||
const serviceUser = await tx.user.findFirstOrThrow({
|
const serviceUser = await tx.user.findFirstOrThrow({
|
||||||
where: {
|
where: {
|
||||||
email: SERVICE_USER_EMAIL,
|
email: SERVICE_USER_EMAIL,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const documentDataBytes = Buffer.from(pdfBytes).toString('base64');
|
const documentDataBytes = Buffer.from(pdfBytes).toString('base64');
|
||||||
|
|
||||||
const { id: documentDataId } = await tx.documentData.create({
|
const { id: documentDataId } = await tx.documentData.create({
|
||||||
data: {
|
data: {
|
||||||
type: DocumentDataType.BYTES_64,
|
type: DocumentDataType.BYTES_64,
|
||||||
data: documentDataBytes,
|
data: documentDataBytes,
|
||||||
initialData: documentDataBytes,
|
initialData: documentDataBytes,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// Create document.
|
// Create document.
|
||||||
const document = await tx.document.create({
|
const document = await tx.document.create({
|
||||||
data: {
|
data: {
|
||||||
title: documentName,
|
title: documentName,
|
||||||
status: DocumentStatus.COMPLETED,
|
status: DocumentStatus.COMPLETED,
|
||||||
documentDataId,
|
documentDataId,
|
||||||
userId: serviceUser.id,
|
userId: serviceUser.id,
|
||||||
createdAt,
|
createdAt,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// Create recipient.
|
// Create recipient.
|
||||||
const recipient = await tx.recipient.create({
|
const recipient = await tx.recipient.create({
|
||||||
data: {
|
data: {
|
||||||
documentId: document.id,
|
documentId: document.id,
|
||||||
name: signer.name,
|
name: signer.name,
|
||||||
email: signer.email,
|
email: signer.email,
|
||||||
token: documentToken,
|
token: documentToken,
|
||||||
signedAt: createdAt,
|
signedAt: createdAt,
|
||||||
readStatus: ReadStatus.OPENED,
|
readStatus: ReadStatus.OPENED,
|
||||||
signingStatus: SigningStatus.SIGNED,
|
signingStatus: SigningStatus.SIGNED,
|
||||||
sendStatus: SendStatus.SENT,
|
sendStatus: SendStatus.SENT,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// Create fields and signatures.
|
// Create fields and signatures.
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
fields.map(async (field) => {
|
fields.map(async (field) => {
|
||||||
const insertedField = await tx.field.create({
|
const insertedField = await tx.field.create({
|
||||||
data: {
|
|
||||||
documentId: document.id,
|
|
||||||
recipientId: recipient.id,
|
|
||||||
...mapField(field, signer),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (field.type === FieldType.SIGNATURE || field.type === FieldType.FREE_SIGNATURE) {
|
|
||||||
await tx.signature.create({
|
|
||||||
data: {
|
data: {
|
||||||
fieldId: insertedField.id,
|
documentId: document.id,
|
||||||
signatureImageAsBase64,
|
|
||||||
typedSignature,
|
|
||||||
recipientId: recipient.id,
|
recipientId: recipient.id,
|
||||||
|
...mapField(field, signer),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
|
|
||||||
return documentToken;
|
if (field.type === FieldType.SIGNATURE || field.type === FieldType.FREE_SIGNATURE) {
|
||||||
});
|
await tx.signature.create({
|
||||||
|
data: {
|
||||||
|
fieldId: insertedField.id,
|
||||||
|
signatureImageAsBase64,
|
||||||
|
typedSignature,
|
||||||
|
recipientId: recipient.id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
return documentToken;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
maxWait: 5000,
|
||||||
|
timeout: 30000,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
// Todo: Handle `downloadLink`
|
// Todo: Handle `downloadLink`
|
||||||
const template = createElement(DocumentSelfSignedEmailTemplate, {
|
const template = createElement(DocumentSelfSignedEmailTemplate, {
|
||||||
|
|||||||
Reference in New Issue
Block a user