From 2149c7a725dd68ad357313d51ea1277c60ffc6b3 Mon Sep 17 00:00:00 2001 From: tammi-23 Date: Mon, 9 Feb 2026 21:50:07 +0100 Subject: [PATCH 1/7] Added draft state handling --- .../src/components/MailComposeForm.vue | 25 +- .../web-app-mail/src/components/MailList.vue | 6 +- .../src/components/MailListItem.vue | 18 +- .../src/components/MailWidget.vue | 289 +++++++++++++++++- .../src/components/MailboxTree.vue | 8 +- .../src/composables/piniaStores/accounts.ts | 77 ++--- .../src/composables/piniaStores/helpers.ts | 20 ++ .../src/composables/piniaStores/mailboxes.ts | 82 ++--- .../src/composables/piniaStores/mails.ts | 83 +++-- .../src/composables/useSaveAsDraft.ts | 112 +++++++ .../src/helpers/mailDraftConnector.ts | 42 +++ 11 files changed, 567 insertions(+), 195 deletions(-) create mode 100644 packages/web-app-mail/src/composables/piniaStores/helpers.ts create mode 100644 packages/web-app-mail/src/composables/useSaveAsDraft.ts create mode 100644 packages/web-app-mail/src/helpers/mailDraftConnector.ts diff --git a/packages/web-app-mail/src/components/MailComposeForm.vue b/packages/web-app-mail/src/components/MailComposeForm.vue index 7509c4f4b5..a52a30646e 100644 --- a/packages/web-app-mail/src/components/MailComposeForm.vue +++ b/packages/web-app-mail/src/components/MailComposeForm.vue @@ -65,7 +65,7 @@ diff --git a/packages/web-app-mail/src/components/MailListItem.vue b/packages/web-app-mail/src/components/MailListItem.vue index b11ffd98bf..52ad7fa1fb 100644 --- a/packages/web-app-mail/src/components/MailListItem.vue +++ b/packages/web-app-mail/src/components/MailListItem.vue @@ -25,7 +25,7 @@
- +
@@ -37,11 +37,9 @@ import { computed } from 'vue' import { formatRelativeDateFromISO } from '@opencloud-eu/web-pkg' import { useGettext } from 'vue3-gettext' import MailIndicators from './MailIndicators.vue' +import DOMPurify from 'dompurify' -const { mail } = defineProps<{ - mail: Mail -}>() - +const { mail } = defineProps<{ mail: Mail }>() const { current: currentLanguage } = useGettext() const fromText = computed(() => { @@ -51,4 +49,14 @@ const fromText = computed(() => { const receivedAtRelativeDate = computed(() => { return formatRelativeDateFromISO(mail.receivedAt, currentLanguage) }) + +const previewText = computed(() => { + const p = mail.preview ?? '' + if (!p.includes('<')) { + return p + } + + const stripped = DOMPurify.sanitize(p, { ALLOWED_TAGS: [], ALLOWED_ATTR: [] }) + return stripped.replace(/\s+/g, ' ').trim() +}) diff --git a/packages/web-app-mail/src/components/MailWidget.vue b/packages/web-app-mail/src/components/MailWidget.vue index 4b99fb48fa..33a3f582a8 100644 --- a/packages/web-app-mail/src/components/MailWidget.vue +++ b/packages/web-app-mail/src/components/MailWidget.vue @@ -25,7 +25,7 @@ fill-type="line" /> - + @@ -46,7 +46,7 @@ +
+
+ + +
+
@@ -78,7 +87,7 @@ > - + @@ -99,7 +108,7 @@ +
+
+ + +
+
+ + +