From 5fecdac9225b3a063a41e10efd9b912b4df4c41a Mon Sep 17 00:00:00 2001 From: Leon Serfaty G Date: Fri, 18 Jul 2025 03:22:08 +0000 Subject: [PATCH] an unexpected error ocurred when trying to save the template --- src/app/admin/settings/email-templates/page.tsx | 12 ++++++++++-- src/lib/actions/email.ts | 13 +++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/app/admin/settings/email-templates/page.tsx b/src/app/admin/settings/email-templates/page.tsx index 11cedaf..002e6e3 100644 --- a/src/app/admin/settings/email-templates/page.tsx +++ b/src/app/admin/settings/email-templates/page.tsx @@ -28,7 +28,7 @@ function EmailPreview({ template }: { template: EmailTemplate }) {

[Ready-Made Hours]+ hours

` - ).replace(/\n/g, '
'); + ).replace('[User Name]', 'Valued Customer').replace(/\n/g, '
'); return (
@@ -43,6 +43,7 @@ function EmailPreview({ template }: { template: EmailTemplate }) { export default function EmailTemplatesPage() { const [isEditing, setIsEditing] = useState(false); const [template, setTemplate] = useState({ subject: '', body: '' }); + const [originalTemplate, setOriginalTemplate] = useState({ subject: '', body: '' }); const [isLoading, setIsLoading] = useState(true); const { toast } = useToast(); @@ -53,6 +54,7 @@ export default function EmailTemplatesPage() { const fetchedTemplate = await getEmailTemplate(); if (fetchedTemplate) { setTemplate(fetchedTemplate); + setOriginalTemplate(fetchedTemplate); } else { throw new Error('Could not find email template.'); } @@ -69,6 +71,11 @@ export default function EmailTemplatesPage() { fetchTemplate(); }, [toast]); + const handleCancel = () => { + setTemplate(originalTemplate); + setIsEditing(false); + }; + const handleSave = async () => { try { const result = await updateEmailTemplate(template); @@ -77,6 +84,7 @@ export default function EmailTemplatesPage() { title: 'Success', description: 'Email template updated successfully.', }); + setOriginalTemplate(template); setIsEditing(false); } else { throw new Error(result.message); @@ -109,7 +117,7 @@ export default function EmailTemplatesPage() { ) : (
- +
)} diff --git a/src/lib/actions/email.ts b/src/lib/actions/email.ts index d093c26..0162cc1 100644 --- a/src/lib/actions/email.ts +++ b/src/lib/actions/email.ts @@ -24,7 +24,8 @@ export async function getEmailTemplate(): Promise<{ subject: string; body: strin return template; } catch (error) { console.error('Failed to get email template:', error); - return null; + // Propagate the error to be handled by the caller + throw new Error('Database error while fetching email template.'); } } @@ -43,12 +44,16 @@ export async function updateEmailTemplate(data: { subject: string; body: string try { const stmt = db.prepare('UPDATE email_templates SET subject = ?, body = ? WHERE id = ?'); // We assume we're updating the template with id = 1 - stmt.run(subject, body, 1); + const info = stmt.run(subject, body, 1); + if (info.changes === 0) { + return { success: false, message: 'Could not find the template to update. No changes were made.' }; + } + revalidatePath('/admin/settings/email-templates'); return { success: true, message: 'Email template updated successfully!' }; - } catch (error) { + } catch (error: any) { console.error('Failed to update email template:', error); - return { success: false, message: 'An unexpected error occurred.' }; + return { success: false, message: error.message || 'An unexpected database error occurred.' }; } }