diff --git a/apps/frontend/src/components/EmailComms/EmailEditorOverviewPage.tsx b/apps/frontend/src/components/EmailComms/EmailEditorOverviewPage.tsx index df7a80e..54f2c98 100644 --- a/apps/frontend/src/components/EmailComms/EmailEditorOverviewPage.tsx +++ b/apps/frontend/src/components/EmailComms/EmailEditorOverviewPage.tsx @@ -25,6 +25,7 @@ export function EmailEditor() { try { const templates = await apiClient.getEmailTemplates(); if (templates && templates.length > 0) { + let loadedMeta = false; setEmails((prev) => { const next = { ...prev }; templates.forEach((t: any) => { @@ -34,11 +35,34 @@ export function EmailEditor() { else if (t.type === 'email_subscribers') tab = 'mass'; if (tab) { + const bodyMatch = t.bodyHtml.match( + /([\s\S]*?)/, + ); + const body = bodyMatch ? bodyMatch[1].trim() : t.bodyHtml; + next[tab] = { subject: t.subject, - body: t.bodyHtml, + body: body, }; } + + if (!loadedMeta) { + const metaMatch = t.bodyHtml.match(//); + if (metaMatch) { + try { + const meta = JSON.parse(metaMatch[1]); + if (meta.sig) setSig(meta.sig); + if (meta.ctaText) setCtaText(meta.ctaText); + if (meta.ctaLink) setCtaLink(meta.ctaLink); + loadedMeta = true; // Use the first found metadata + } catch (e) { + console.error( + 'Failed to parse metadata from email template', + e, + ); + } + } + } }); return next; }); @@ -60,13 +84,15 @@ export function EmailEditor() { const buildFullHTML = () => { const email = emails[activeTab]; - return ` -
- ${email.body} - ${buildSignatureHTML(sig)} - ${ctaText ? `` : ''} - - `; + const metadata = { sig, ctaText, ctaLink }; + return ` + + + ${email.body} + + ${buildSignatureHTML(sig)} + ${ctaText ? `` : ''} +`; }; const handleSave = async () => { diff --git a/apps/frontend/src/components/EmailComms/SignatureEditorCard.tsx b/apps/frontend/src/components/EmailComms/SignatureEditorCard.tsx index 319a382..7e28a6a 100644 --- a/apps/frontend/src/components/EmailComms/SignatureEditorCard.tsx +++ b/apps/frontend/src/components/EmailComms/SignatureEditorCard.tsx @@ -25,11 +25,27 @@ export default function SignatureEditor({|
- |
@@ -112,6 +116,13 @@ export function buildSignatureHTML(sig: Signature): string {
+ ${ + sig.email + ? `` + : '' + } ${ sig.website ? ` |