From f012826b6bfd0929b47e4a660d813e8f78218c00 Mon Sep 17 00:00:00 2001 From: Adithya Krishna Date: Fri, 15 Mar 2024 22:26:31 +0530 Subject: [PATCH] chore: send document owner email Signed-off-by: Adithya Krishna --- .../lib/server-only/document/seal-document.ts | 5 ++++- .../server-only/document/send-completed-email.ts | 16 +++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/packages/lib/server-only/document/seal-document.ts b/packages/lib/server-only/document/seal-document.ts index 95b7d9dc4..d9cf8d392 100644 --- a/packages/lib/server-only/document/seal-document.ts +++ b/packages/lib/server-only/document/seal-document.ts @@ -12,6 +12,7 @@ import { DocumentStatus, RecipientRole, SigningStatus } from '@documenso/prisma/ import { WebhookTriggerEvents } from '@documenso/prisma/client'; import { signPdf } from '@documenso/signing'; +import { getRequiredServerComponentSession } from '../../next-auth/get-server-component-session'; import type { RequestMetadata } from '../../universal/extract-request-metadata'; import { getFile } from '../../universal/upload/get-file'; import { putFile } from '../../universal/upload/put-file'; @@ -46,6 +47,8 @@ export const sealDocument = async ({ const { documentData } = document; + const { user: documentOwner } = await getRequiredServerComponentSession(); + if (!documentData) { throw new Error(`Document ${document.id} has no document data`); } @@ -169,7 +172,7 @@ export const sealDocument = async ({ }); if (sendEmail && !isResealing) { - await sendCompletedEmail({ documentId, requestMetadata }); + await sendCompletedEmail({ documentId, requestMetadata, documentOwner }); } await triggerWebhook({ diff --git a/packages/lib/server-only/document/send-completed-email.ts b/packages/lib/server-only/document/send-completed-email.ts index 2ef1da851..b797231c8 100644 --- a/packages/lib/server-only/document/send-completed-email.ts +++ b/packages/lib/server-only/document/send-completed-email.ts @@ -4,20 +4,25 @@ import { mailer } from '@documenso/email/mailer'; import { render } from '@documenso/email/render'; import { DocumentCompletedEmailTemplate } from '@documenso/email/templates/document-completed'; import { prisma } from '@documenso/prisma'; +import type { User } from '@documenso/prisma/client'; import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app'; import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs'; import type { RequestMetadata } from '../../universal/extract-request-metadata'; import { getFile } from '../../universal/upload/get-file'; import { createDocumentAuditLogData } from '../../utils/document-audit-logs'; -import { getUserById } from '../user/get-user-by-id'; export interface SendDocumentOptions { documentId: number; requestMetadata?: RequestMetadata; + documentOwner: User; } -export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDocumentOptions) => { +export const sendCompletedEmail = async ({ + documentId, + requestMetadata, + documentOwner, +}: SendDocumentOptions) => { const document = await prisma.document.findUnique({ where: { id: documentId, @@ -41,7 +46,6 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo await Promise.all( document.Recipient.map(async (recipient) => { const { email, name, token } = recipient; - const user = await getUserById({ id: document.userId }); const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000'; @@ -55,13 +59,15 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo async (tx) => { await mailer.sendMail({ to: [ + // To send email to recipient of the document { address: email, name, }, + // To send email to owner of the document { - address: user.email, - name: user.name!, + address: documentOwner.email, + name: documentOwner.name!, }, ], from: {