feat: Added platform emails for billing limits and disabled projects
This commit is contained in:
@@ -1 +1,2 @@
|
||||
export * from './send';
|
||||
export * from './notify';
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
import {render} from '@react-email/components';
|
||||
import type {ReactElement} from 'react';
|
||||
import {sendEmail} from './send';
|
||||
|
||||
/**
|
||||
* Check if platform email notifications are enabled
|
||||
* Requires PLUNK_API_KEY to be set in environment
|
||||
*/
|
||||
export function isPlatformEmailEnabled(): boolean {
|
||||
return !!process.env.PLUNK_API_KEY && !!process.env.PLUNK_FROM_ADDRESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a platform notification email (only if PLUNK_API_KEY is configured)
|
||||
* @param to - Recipient email address
|
||||
* @param subject - Email subject line
|
||||
* @param template - React email template component
|
||||
*/
|
||||
export async function sendPlatformEmail(to: string, subject: string, template: ReactElement): Promise<void> {
|
||||
// Skip if platform emails are not enabled
|
||||
if (!isPlatformEmailEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
// Render React email template to HTML
|
||||
const html = await render(template);
|
||||
|
||||
// Send email using the platform
|
||||
await sendEmail({
|
||||
to,
|
||||
from: process.env.PLUNK_FROM_ADDRESS as string,
|
||||
subject,
|
||||
body: html,
|
||||
});
|
||||
} catch (error) {
|
||||
// Log error but don't throw - notifications should not break the main flow
|
||||
console.error('[Platform Email] Failed to send notification:', error);
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,12 @@
|
||||
interface SendEmailParams {
|
||||
to: string;
|
||||
from: string;
|
||||
subject: string;
|
||||
body: string;
|
||||
}
|
||||
|
||||
export async function sendEmail({to, subject, body}: SendEmailParams) {
|
||||
const apiUrl = process.env.API_URI ?? 'http://localhost:8080';
|
||||
export async function sendEmail({to, from, subject, body}: SendEmailParams) {
|
||||
const apiUrl = process.env.API_URI;
|
||||
const res = await fetch(`${apiUrl}/v1/send`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
@@ -14,6 +15,7 @@ export async function sendEmail({to, subject, body}: SendEmailParams) {
|
||||
},
|
||||
body: JSON.stringify({
|
||||
to,
|
||||
from,
|
||||
subject,
|
||||
body,
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user