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.' };
}
}