From 7a001d27a5204b792ee33093eaa52fbc0d601c6b Mon Sep 17 00:00:00 2001 From: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> Date: Wed, 11 Jun 2025 20:18:46 +0200 Subject: [PATCH] refactor: email template preview modal (#19119) --- .../template-settings.svelte | 109 ++++++++---------- .../modals/EmailTemplatePreviewModal.svelte | 23 ++++ 2 files changed, 68 insertions(+), 64 deletions(-) create mode 100644 web/src/lib/modals/EmailTemplatePreviewModal.svelte diff --git a/web/src/lib/components/admin-page/settings/template-settings/template-settings.svelte b/web/src/lib/components/admin-page/settings/template-settings/template-settings.svelte index 8e85664750..872b4b9833 100644 --- a/web/src/lib/components/admin-page/settings/template-settings/template-settings.svelte +++ b/web/src/lib/components/admin-page/settings/template-settings/template-settings.svelte @@ -4,9 +4,11 @@ import LoadingSpinner from '$lib/components/shared-components/loading-spinner.svelte'; import SettingAccordion from '$lib/components/shared-components/settings/setting-accordion.svelte'; import SettingTextarea from '$lib/components/shared-components/settings/setting-textarea.svelte'; + import { modalManager } from '$lib/managers/modal-manager.svelte'; + import EmailTemplatePreviewModal from '$lib/modals/EmailTemplatePreviewModal.svelte'; import { handleError } from '$lib/utils/handle-error'; import { type SystemConfigDto, type SystemConfigTemplateEmailsDto, getNotificationTemplateAdmin } from '@immich/sdk'; - import { Button, Modal, ModalBody } from '@immich/ui'; + import { Button } from '@immich/ui'; import { mdiEyeOutline } from '@mdi/js'; import { t } from 'svelte-i18n'; import { fade } from 'svelte/transition'; @@ -18,14 +20,13 @@ let { savedConfig, config = $bindable() }: Props = $props(); - let htmlPreview = $state(''); let loadingPreview = $state(false); const getTemplate = async (name: string, template: string) => { try { loadingPreview = true; - const result = await getNotificationTemplateAdmin({ name, templateDto: { template } }); - htmlPreview = result.html; + const { html } = await getNotificationTemplateAdmin({ name, templateDto: { template } }); + await modalManager.show(EmailTemplatePreviewModal, { html }); } catch (error) { handleError(error, 'Could not load template.'); } finally { @@ -33,10 +34,6 @@ } }; - const closePreviewModal = () => { - htmlPreview = ''; - }; - const templateConfigs = [ { label: $t('admin.template_email_welcome'), @@ -66,63 +63,47 @@ }; -