mirror of
https://github.com/documenso/documenso.git
synced 2025-11-12 15:53:02 +10:00
fix: reverse meta relation and tidy code
This commit is contained in:
@ -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,
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -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,
|
||||
},
|
||||
});
|
||||
};
|
||||
@ -13,6 +13,7 @@ export const getDocumentById = async ({ id, userId }: GetDocumentByIdOptions) =>
|
||||
},
|
||||
include: {
|
||||
documentData: true,
|
||||
documentMeta: true,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@ -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 }),
|
||||
|
||||
@ -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;
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user