diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index 49b8fdada..11f965d00 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -221,5 +221,16 @@ export enum Submit { BucketUpdateExtensions = 'submit_bucket_update_extensions', FileCreate = 'submit_file_create', FileDelete = 'submit_file_delete', - FileUpdatePermissions = 'submit_file_update_permissions' + FileUpdatePermissions = 'submit_file_update_permissions', + EmailChangeLocale = 'submit_email_change_locale', + EmailResetTemplate = 'submit_email_reset_template', + EmailUpdateInviteTemplate = 'submit_email_update_invite_template', + EmailUpdateMagicUrlTemplate = 'submit_email_update_magic_url_template', + EmailUpdateRecoveryTemplate = 'submit_email_update_recovery_template', + EmailUpdateVerificationTemplate = 'submit_email_update_verification_template', + SmsChangeLocale = 'submit_sms_change_locale', + SmsResetTemplate = 'submit_sms_reset_template', + SmsUpdateInviteTemplate = 'submit_sms_update_invite_template', + SmsUpdateLoginTemplate = 'submit_sms_update_login_template', + SmsUpdateVerificationTemplate = 'submit_sms_update_verification_template' } diff --git a/src/routes/console/project-[project]/auth/templates/+page.svelte b/src/routes/console/project-[project]/auth/templates/+page.svelte index 2e8ff0eb2..61a5de7ef 100644 --- a/src/routes/console/project-[project]/auth/templates/+page.svelte +++ b/src/routes/console/project-[project]/auth/templates/+page.svelte @@ -38,7 +38,7 @@ import EmailInviteTemplate from './emailInviteTemplate.svelte'; import SmsVerificationTemplate from './smsVerificationTemplate.svelte'; import SmsLoginTemplate from './smsLoginTemplate.svelte'; - import { baseEmailTemplate, baseSmsTemplate, emailTemplate, smsTemplate } from './strote'; + import { baseEmailTemplate, baseSmsTemplate, emailTemplate, smsTemplate } from './store'; import { Button } from '$lib/elements/forms'; export let data: PageData; @@ -91,7 +91,7 @@ { name: 'Add SMTP server', method: () => { - goto(base + '/console/project-' + $project.$id + '/settings/smtp'); + goto(`${base}/console/project-${$project.$id}/settings/smtp`); } } ]}> @@ -165,7 +165,7 @@ - diff --git a/src/routes/console/project-[project]/auth/templates/emailInviteTemplate.svelte b/src/routes/console/project-[project]/auth/templates/emailInviteTemplate.svelte index 662cdaf4a..ece738a44 100644 --- a/src/routes/console/project-[project]/auth/templates/emailInviteTemplate.svelte +++ b/src/routes/console/project-[project]/auth/templates/emailInviteTemplate.svelte @@ -4,9 +4,10 @@ import type { Models } from '@appwrite.io/console'; import { loadEmailTemplate } from './+page.svelte'; import { page } from '$app/stores'; - import { baseEmailTemplate, emailTemplate } from './strote'; + import { baseEmailTemplate, emailTemplate } from './store'; import { addNotification } from '$lib/stores/notifications'; import { Id } from '$lib/components'; + import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; export let localeCodes: Models.LocaleCode[]; @@ -20,16 +21,17 @@ }, 1000); try { const template = await loadEmailTemplate(projectId, 'invitation', locale); - clearTimeout(timeout); emailTemplate.set(template); $baseEmailTemplate = { ...$emailTemplate }; + trackEvent(Submit.EmailChangeLocale, { locale, type: 'invitation' }); } catch (error) { - clearTimeout(timeout); + trackError(error, Submit.EmailChangeLocale); addNotification({ type: 'error', message: error.message }); } finally { + clearTimeout(timeout); loading = false; } } diff --git a/src/routes/console/project-[project]/auth/templates/emailMagicUrlTemplate.svelte b/src/routes/console/project-[project]/auth/templates/emailMagicUrlTemplate.svelte index 0ebbc6b89..0170381bb 100644 --- a/src/routes/console/project-[project]/auth/templates/emailMagicUrlTemplate.svelte +++ b/src/routes/console/project-[project]/auth/templates/emailMagicUrlTemplate.svelte @@ -3,10 +3,11 @@ import EmailTemplate from './emailTemplate.svelte'; import LocaleOptions from './localeOptions.svelte'; import type { Models } from '@appwrite.io/console'; - import { baseEmailTemplate, emailTemplate } from './strote'; + import { baseEmailTemplate, emailTemplate } from './store'; import { page } from '$app/stores'; import { addNotification } from '$lib/stores/notifications'; import { Id } from '$lib/components'; + import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; export let localeCodes: Models.LocaleCode[]; const projectId = $page.params.project; @@ -20,16 +21,18 @@ }, 1000); try { const template = await loadEmailTemplate(projectId, 'magicSession', locale); - clearTimeout(timeout); emailTemplate.set(template); $baseEmailTemplate = { ...$emailTemplate }; + trackEvent(Submit.EmailChangeLocale, { locale, type: 'magicSession' }); } catch (error) { - clearTimeout(timeout); + trackError(error, Submit.EmailChangeLocale); addNotification({ type: 'error', message: error.message }); } finally { + clearTimeout(timeout); + loading = false; } } diff --git a/src/routes/console/project-[project]/auth/templates/emailRecoveryTemplate.svelte b/src/routes/console/project-[project]/auth/templates/emailRecoveryTemplate.svelte index 1f49ad7d2..52300e899 100644 --- a/src/routes/console/project-[project]/auth/templates/emailRecoveryTemplate.svelte +++ b/src/routes/console/project-[project]/auth/templates/emailRecoveryTemplate.svelte @@ -2,11 +2,12 @@ import EmailTemplate from './emailTemplate.svelte'; import LocaleOptions from './localeOptions.svelte'; import type { Models } from '@appwrite.io/console'; - import { baseEmailTemplate, emailTemplate } from './strote'; + import { baseEmailTemplate, emailTemplate } from './store'; import { loadEmailTemplate } from './+page.svelte'; import { page } from '$app/stores'; import { addNotification } from '$lib/stores/notifications'; import { Id } from '$lib/components'; + import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; export let localeCodes: Models.LocaleCode[]; const projectId = $page.params.project; @@ -20,16 +21,17 @@ }, 1000); try { const template = await loadEmailTemplate(projectId, 'recovery', locale); - clearTimeout(timeout); emailTemplate.set(template); $baseEmailTemplate = { ...$emailTemplate }; + trackEvent(Submit.EmailChangeLocale, { locale, type: 'recovery' }); } catch (error) { - clearTimeout(timeout); + trackError(error, Submit.EmailChangeLocale); addNotification({ type: 'error', message: error.message }); } finally { + clearTimeout(timeout); loading = false; } } diff --git a/src/routes/console/project-[project]/auth/templates/emailTemplate.svelte b/src/routes/console/project-[project]/auth/templates/emailTemplate.svelte index 248b71523..403719755 100644 --- a/src/routes/console/project-[project]/auth/templates/emailTemplate.svelte +++ b/src/routes/console/project-[project]/auth/templates/emailTemplate.svelte @@ -11,12 +11,15 @@ import { sdk } from '$lib/stores/sdk'; import { project } from '../../store'; import ResetEmail from './resetEmail.svelte'; - import { baseEmailTemplate, emailTemplate } from './strote'; + import { baseEmailTemplate, emailTemplate } from './store'; import { deepEqual } from '$lib/helpers/object'; + import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; export let loading = false; let openResetModal = false; + let eventType = Submit.EmailUpdateInviteTemplate; + async function saveEmailTemplate() { if (!$emailTemplate.locale) { addNotification({ @@ -26,6 +29,20 @@ return; } try { + switch ($emailTemplate.type) { + case 'invitation': + eventType = Submit.EmailUpdateInviteTemplate; + break; + case 'magicSession': + eventType = Submit.EmailUpdateMagicUrlTemplate; + break; + case 'recovery': + eventType = Submit.EmailUpdateRecoveryTemplate; + break; + case 'verification': + eventType = Submit.EmailUpdateVerificationTemplate; + break; + } await sdk.forConsole.projects.updateEmailTemplate( $project.$id, $emailTemplate.type, @@ -40,11 +57,16 @@ $baseEmailTemplate = { ...$emailTemplate }; + addNotification({ type: 'success', message: `Email ${$emailTemplate.type} template for ${$emailTemplate.locale} updated` }); + trackEvent(eventType, { + locale: $emailTemplate.locale + }); } catch (e) { + trackError(e, eventType); addNotification({ type: 'error', message: e.message diff --git a/src/routes/console/project-[project]/auth/templates/emailVerificationTemplate.svelte b/src/routes/console/project-[project]/auth/templates/emailVerificationTemplate.svelte index e09ec654b..ccc85aa37 100644 --- a/src/routes/console/project-[project]/auth/templates/emailVerificationTemplate.svelte +++ b/src/routes/console/project-[project]/auth/templates/emailVerificationTemplate.svelte @@ -3,10 +3,11 @@ import LocaleOptions from './localeOptions.svelte'; import type { Models } from '@appwrite.io/console'; import { loadEmailTemplate } from './+page.svelte'; - import { baseEmailTemplate, emailTemplate } from './strote'; + import { baseEmailTemplate, emailTemplate } from './store'; import { page } from '$app/stores'; import { Id } from '$lib/components'; import { addNotification } from '$lib/stores/notifications'; + import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; export let localeCodes: Models.LocaleCode[]; const projectId = $page.params.project; @@ -20,16 +21,17 @@ }, 1000); try { const template = await loadEmailTemplate(projectId, 'verification', locale); - clearTimeout(timeout); emailTemplate.set(template); $baseEmailTemplate = { ...$emailTemplate }; + trackEvent(Submit.EmailChangeLocale, { locale, type: 'verification' }); } catch (error) { - clearTimeout(timeout); + trackError(error, Submit.EmailChangeLocale); addNotification({ type: 'error', message: error.message }); } finally { + clearTimeout(timeout); loading = false; } } diff --git a/src/routes/console/project-[project]/auth/templates/resetEmail.svelte b/src/routes/console/project-[project]/auth/templates/resetEmail.svelte index e14308c56..4e09434a6 100644 --- a/src/routes/console/project-[project]/auth/templates/resetEmail.svelte +++ b/src/routes/console/project-[project]/auth/templates/resetEmail.svelte @@ -1,10 +1,11 @@