fix: reverse meta relation and tidy code

This commit is contained in:
Mythie
2023-09-22 12:27:54 +00:00
parent 826a901c10
commit 7823100272
13 changed files with 168 additions and 108 deletions

View File

@ -1,33 +0,0 @@
'use server';
import { prisma } from '@documenso/prisma';
export type CreateDocumentMetaOptions = {
emailSubject: string;
emailBody: string;
};
export const createDocumentMeta = async ({
emailBody,
emailSubject,
}: CreateDocumentMetaOptions) => {
const emailData = {
customEmailBody: emailBody,
customEmailSubject: emailSubject,
};
const existingDocumentMeta = await prisma.documentMeta.findFirst({
where: emailData,
});
if (existingDocumentMeta) {
return await prisma.documentMeta.update({
where: { id: existingDocumentMeta.id },
data: emailData,
});
} else {
return await prisma.documentMeta.create({
data: emailData,
});
}
};

View File

@ -0,0 +1,30 @@
'use server';
import { prisma } from '@documenso/prisma';
export type CreateDocumentMetaOptions = {
documentId: number;
subject: string;
message: string;
};
export const upsertDocumentMeta = async ({
subject,
message,
documentId,
}: CreateDocumentMetaOptions) => {
return await prisma.documentMeta.upsert({
where: {
documentId,
},
create: {
subject,
message,
documentId,
},
update: {
subject,
message,
},
});
};

View File

@ -13,6 +13,7 @@ export const getDocumentById = async ({ id, userId }: GetDocumentByIdOptions) =>
},
include: {
documentData: true,
documentMeta: true,
},
});
};

View File

@ -26,11 +26,11 @@ export const sendDocument = async ({ documentId, userId }: SendDocumentOptions)
},
include: {
Recipient: true,
DocumentMeta: true,
documentMeta: true,
},
});
const customEmail = document?.DocumentMeta;
const customEmail = document?.documentMeta;
if (!document) {
throw new Error('Document not found');
@ -67,10 +67,7 @@ export const sendDocument = async ({ documentId, userId }: SendDocumentOptions)
inviterEmail: user.email,
assetBaseUrl,
signDocumentLink,
customBody: renderCustomEmailTemplate(
customEmail?.customEmailBody || '',
customEmailTemplate,
),
customBody: renderCustomEmailTemplate(customEmail?.message || '', customEmailTemplate),
});
await mailer.sendMail({
@ -82,8 +79,8 @@ export const sendDocument = async ({ documentId, userId }: SendDocumentOptions)
name: process.env.NEXT_PRIVATE_SMTP_FROM_NAME || 'Documenso',
address: process.env.NEXT_PRIVATE_SMTP_FROM_ADDRESS || 'noreply@documenso.com',
},
subject: customEmail?.customEmailSubject
? renderCustomEmailTemplate(customEmail.customEmailSubject, customEmailTemplate)
subject: customEmail?.subject
? renderCustomEmailTemplate(customEmail.subject, customEmailTemplate)
: 'Please sign this document',
html: render(template),
text: render(template, { plainText: true }),

View File

@ -2,19 +2,11 @@ export const renderCustomEmailTemplate = <T extends Record<string, string>>(
template: string,
variables: T,
): string => {
let t = template;
Object.entries(variables).forEach((entry) => {
const [key, value] = entry;
const placeholder = `{${key}}`;
const re = new RegExp(placeholder, 'g');
if (Object.prototype.hasOwnProperty.call(variables, key)) {
t = t.replace(re, String(value));
return template.replace(/\{(\S+)\}/g, (_, key) => {
if (key in variables) {
return variables[key];
}
});
return t;
return key;
});
};