feat: add email notification channel
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
// server/src/lib/notifications/channels/email-channel.js
|
||||
import { sendNotificationEmail } from '../../email.js'
|
||||
import {
|
||||
renderOrderCreatedEmail,
|
||||
renderOrderStatusChangedEmail,
|
||||
renderOrderMessageEmail,
|
||||
renderPaymentStatusChangedEmail,
|
||||
renderAdminOrderCreatedEmail,
|
||||
renderAdminNewReviewEmail,
|
||||
renderAuthCodeEmail,
|
||||
} from '../templates/email-templates.js'
|
||||
|
||||
const templateRenderers = {
|
||||
'order:created': renderOrderCreatedEmail,
|
||||
'order:statusChanged': renderOrderStatusChangedEmail,
|
||||
'orderMessage:adminReply': renderOrderMessageEmail,
|
||||
'payment:statusChanged': renderPaymentStatusChangedEmail,
|
||||
'order:created:admin': renderAdminOrderCreatedEmail,
|
||||
'orderMessage:sent': renderOrderMessageEmail,
|
||||
'review:created': renderAdminNewReviewEmail,
|
||||
'auth:codeRequested': renderAuthCodeEmail,
|
||||
}
|
||||
|
||||
export const emailChannel = {
|
||||
name: 'email',
|
||||
|
||||
async send({ recipient, eventType, payload }) {
|
||||
const renderer = templateRenderers[eventType]
|
||||
if (!renderer) {
|
||||
return { success: false, error: `No email template for event: ${eventType}` }
|
||||
}
|
||||
|
||||
const { subject, html } = renderer(payload)
|
||||
const result = await sendNotificationEmail({ to: recipient, subject, html })
|
||||
return result
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user