diff --git a/bun.lock b/bun.lock
index c85d19e7c4..df55a454ec 100644
--- a/bun.lock
+++ b/bun.lock
@@ -6,7 +6,7 @@
"name": "@appwrite/console",
"dependencies": {
"@ai-sdk/svelte": "^1.1.24",
- "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@7789ae4",
+ "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@0387505",
"@appwrite.io/pink-icons": "0.25.0",
"@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bfe7ce3",
"@appwrite.io/pink-legacy": "^1.0.3",
@@ -125,7 +125,7 @@
"@analytics/type-utils": ["@analytics/type-utils@0.6.4", "", {}, "sha512-Ou1gQxFakOWLcPnbFVsrPb8g1wLLUZYYJXDPjHkG07+5mustGs5yqACx42UAu4A6NszNN6Z5gGxhyH45zPWRxw=="],
- "@appwrite.io/console": ["@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@7789ae4", { "dependencies": { "json-bigint": "1.0.0" } }],
+ "@appwrite.io/console": ["@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@0387505", { "dependencies": { "json-bigint": "1.0.0" } }],
"@appwrite.io/pink-icons": ["@appwrite.io/pink-icons@0.25.0", "", {}, "sha512-0O3i2oEuh5mWvjO80i+X6rbzrWLJ1m5wmv2/M3a1p2PyBJsFxN8xQMTEmTn3Wl/D26SsM7SpzbdW6gmfgoVU9Q=="],
diff --git a/package.json b/package.json
index c1b9df8208..a0eea62b71 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,7 @@
},
"dependencies": {
"@ai-sdk/svelte": "^1.1.24",
- "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@7789ae4",
+ "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@0387505",
"@appwrite.io/pink-icons": "0.25.0",
"@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bfe7ce3",
"@appwrite.io/pink-legacy": "^1.0.3",
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/emailTemplate.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/emailTemplate.svelte
index 68e30d8b2e..70aea6ca91 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/emailTemplate.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/emailTemplate.svelte
@@ -28,6 +28,7 @@
} = $props();
let eventType = $state(Submit.EmailUpdateInviteTemplate);
+ let isResetting = $state(false);
const isSmtpEnabled = $derived(project?.smtpEnabled);
const isButtonDisabled = $derived(deepEqual($emailTemplate, $baseEmailTemplate));
@@ -61,12 +62,12 @@
await sdk.forProject(project.region, project.$id).project.updateEmailTemplate({
templateId: $emailTemplate.type as ProjectEmailTemplateId,
locale,
- subject: $emailTemplate.subject || undefined,
- message: $emailTemplate.message || undefined,
- senderName: $emailTemplate.senderName || undefined,
- senderEmail: $emailTemplate.senderEmail || undefined,
- replyToEmail: $emailTemplate.replyToEmail || undefined,
- replyToName: $emailTemplate.replyToName || undefined
+ subject: $emailTemplate.subject ?? undefined,
+ message: $emailTemplate.message ?? undefined,
+ senderName: $emailTemplate.senderName ?? undefined,
+ senderEmail: $emailTemplate.senderEmail ?? undefined,
+ replyToEmail: $emailTemplate.replyToEmail ?? undefined,
+ replyToName: $emailTemplate.replyToName ?? undefined
});
$baseEmailTemplate = {
@@ -88,6 +89,32 @@
});
}
}
+
+ async function resetToDefault() {
+ const locale = ($emailTemplate.locale ||
+ ProjectEmailTemplateLocale.En) as ProjectEmailTemplateLocale;
+ isResetting = true;
+ try {
+ const defaults = await sdk.forConsole.console.getEmailTemplate({
+ templateId: $emailTemplate.type as ProjectEmailTemplateId,
+ locale
+ });
+ $emailTemplate = {
+ ...$emailTemplate,
+ subject: defaults.subject,
+ message: defaults.message,
+ senderName: defaults.senderName,
+ senderEmail: defaults.senderEmail,
+ replyToEmail: defaults.replyToEmail,
+ replyToName: defaults.replyToName
+ };
+ await saveEmailTemplate();
+ } catch (e) {
+ addNotification({ type: 'error', message: e.message });
+ } finally {
+ isResetting = false;
+ }
+ }
@@ -114,13 +141,15 @@
bind:value={$emailTemplate.replyToEmail}
id="replyToEmail"
label="Reply to email"
- placeholder="noreply@appwrite.io" />
+ placeholder="noreply@appwrite.io"
+ disabled={!isSmtpEnabled} />
+ placeholder="Enter reply to name"
+ disabled={!isSmtpEnabled} />
{#if children}
@@ -160,6 +189,9 @@
+
diff --git a/src/routes/(console)/project-[region]-[project]/settings/smtp/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/smtp/+page.svelte
index 68bb18c00d..6c48a2ce7c 100644
--- a/src/routes/(console)/project-[region]-[project]/settings/smtp/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/settings/smtp/+page.svelte
@@ -21,7 +21,7 @@
const { data }: PageProps = $props();
- const { project } = data;
+ const project = $derived(data.project);
let enabled: boolean = $state(false);
@@ -44,31 +44,35 @@
{ value: '', label: 'None' }
];
+ function normalizeSecure(v: string): string {
+ return v === 'tls' || v === 'ssl' ? v : '';
+ }
+
const isButtonDisabled = $derived.by(() => {
return deepEqual(
{
enabled,
- senderName,
- senderEmail,
- replyToEmail,
- replyToName,
- host,
- port: port ?? '',
- username,
- password,
+ senderName: senderName ?? '',
+ senderEmail: senderEmail ?? '',
+ replyToEmail: replyToEmail ?? '',
+ replyToName: replyToName ?? '',
+ host: host ?? '',
+ port: port ?? null,
+ username: username ?? '',
+ password: password ?? '',
secure
},
{
- enabled: project.smtpEnabled,
- senderName: project.smtpSenderName,
- senderEmail: project.smtpSenderEmail,
- replyToEmail: project.smtpReplyToEmail,
- replyToName: project.smtpReplyToName,
- host: project.smtpHost,
- port: project.smtpPort,
- username: project.smtpUsername,
- password: project.smtpPassword,
- secure: project.smtpSecure
+ enabled: project.smtpEnabled ?? false,
+ senderName: project.smtpSenderName ?? '',
+ senderEmail: project.smtpSenderEmail ?? '',
+ replyToEmail: project.smtpReplyToEmail ?? '',
+ replyToName: project.smtpReplyToName ?? '',
+ host: project.smtpHost ?? '',
+ port: project.smtpPort ?? null,
+ username: project.smtpUsername ?? '',
+ password: project.smtpPassword ?? '',
+ secure: normalizeSecure(project.smtpSecure ?? '')
}
);
});
@@ -77,14 +81,14 @@
try {
await sdk.forProject(project.region, project.$id).project.updateSMTP({
enabled,
- senderName: senderName || undefined,
- senderEmail: senderEmail || undefined,
- replyToEmail: replyToEmail || undefined,
- replyToName: replyToName || undefined,
- host: host || undefined,
- port: port || undefined,
- username: username || undefined,
- password: password || undefined,
+ senderName: senderName ?? undefined,
+ senderEmail: senderEmail ?? undefined,
+ replyToEmail: replyToEmail ?? undefined,
+ replyToName: replyToName ?? undefined,
+ host: host ?? undefined,
+ port: port ?? undefined,
+ username: username ?? undefined,
+ password: password ?? undefined,
secure: secure ? (secure as ProjectSMTPSecure) : undefined
});
@@ -105,29 +109,15 @@
$effect(() => {
enabled = project.smtpEnabled ?? false;
- senderName = project.smtpSenderName;
- senderEmail = project.smtpSenderEmail;
- replyToEmail = project.smtpReplyToEmail;
- replyToName = project.smtpReplyToName;
- host = project.smtpHost;
- port = project.smtpPort;
- username = project.smtpUsername;
- password = project.smtpPassword;
- secure = project.smtpSecure === 'tls' ? 'tls' : project.smtpSecure === 'ssl' ? 'ssl' : '';
- });
-
- $effect(() => {
- if (!enabled) {
- senderName = '';
- senderEmail = '';
- replyToEmail = '';
- replyToName = '';
- host = '';
- port = null;
- username = '';
- password = '';
- secure = '';
- }
+ senderName = project.smtpSenderName ?? '';
+ senderEmail = project.smtpSenderEmail ?? '';
+ replyToEmail = project.smtpReplyToEmail ?? '';
+ replyToName = project.smtpReplyToName ?? '';
+ host = project.smtpHost ?? '';
+ port = project.smtpPort ?? null;
+ username = project.smtpUsername ?? '';
+ password = project.smtpPassword ?? '';
+ secure = normalizeSecure(project.smtpSecure ?? '');
});