import { EmailTemplate } from "@jitsu-internal/webapps-shared"; import { Body, Container, Html, Preview, Section, Text } from "@react-email/components"; import React from "react"; import dayjs from "dayjs"; import utc from "dayjs/plugin/utc"; import { main } from "./styles"; import { CheckJobStatusButton, Footer } from "./shared"; dayjs.extend(utc); export type AccountAlertEventType = | "member-invited" | "member-joined" | "member-removed" | "member-role-changed" | "workspace-deleted"; export type AccountAlertEmailProps = { workspaceName: string; workspaceUrl: string; auditLogUrl: string; eventType: AccountAlertEventType; occurredAt: string; actorEmail?: string; actorName?: string; targetEmail?: string; prevRole?: string; newRole?: string; unsubscribeLink?: string; }; const eventHeadline: Record = { "member-invited": "A new member was invited", "member-joined": "A new member joined", "member-removed": "A member was removed", "member-role-changed": "A member role was changed", "workspace-deleted": "Workspace was deleted", }; const eventEmoji: Record = { "member-invited": "✉️", "member-joined": "👤", "member-removed": "👋", "member-role-changed": "🔑", "workspace-deleted": "🗑️", }; function describe(props: AccountAlertEmailProps): string { const { eventType, actorName, actorEmail, targetEmail, prevRole, newRole, workspaceName } = props; const actor = actorName || actorEmail || "Someone"; switch (eventType) { case "member-invited": return `${actor} invited ${targetEmail || "a new user"} to ${workspaceName}.`; case "member-joined": return `${targetEmail || actor} joined ${workspaceName}.`; case "member-removed": return `${actor} removed ${targetEmail || "a user"} from ${workspaceName}.`; case "member-role-changed": return `${actor} changed the role of ${targetEmail || "a user"} from ${prevRole || "?"} to ${ newRole || "?" } in ${workspaceName}.`; case "workspace-deleted": return `${actor} deleted the workspace ${workspaceName}.`; } } export const AccountAlertEmail: EmailTemplate = props => { const { eventType, occurredAt, auditLogUrl, workspaceName, unsubscribeLink } = props; const headline = eventHeadline[eventType]; const emoji = eventEmoji[eventType]; return ( {emoji} {headline} in {workspaceName}
{emoji} {headline}
{describe(props)} Time: {dayjs(occurredAt).utc().format("YYYY-MM-DD HH:mm:ss")} UTC If you do not recognize this activity, please review the workspace audit log and members list immediately.