diff --git a/src/components/MessageComposer.vue b/src/components/MessageComposer.vue index b221085..91959b0 100644 --- a/src/components/MessageComposer.vue +++ b/src/components/MessageComposer.vue @@ -10,14 +10,16 @@ import Placeholder from '@tiptap/extension-placeholder' import { EntityObject } from '@MailManager/models/entity' import type { CollectionObject } from '@MailManager/models' import { useMailStore } from '@/stores/mailStore' +import type { MessageAddressInterface } from '@MailManager/types/message' +import { ComposerMode } from '@/types/composer' import ComposerToolbar from '@/components/composer/ComposerToolbar.vue' import ComposerRecipients from '@/components/composer/ComposerRecipients.vue' import ComposerEditor from '@/components/composer/ComposerEditor.vue' // Props interface Props { - mode: 'new' | 'reply' | 'forward' - source?: EntityObject | null + mode: ComposerMode + source?: EntityObject | MessageAddressInterface | null folder?: CollectionObject | null } @@ -83,7 +85,15 @@ function initializeComposerFromProps() { mailStore.resetComposerState() resetComposerFields() - if (!props.source) { + if (props.mode === ComposerMode.Fresh) { + if (props.source && 'address' in props.source) { + // If source is an email address, pre-fill the "To" field + to.value = [props.source.address] + } + return + } + + if (props.source instanceof EntityObject == false) { return } @@ -94,19 +104,19 @@ function initializeComposerFromProps() { const sentAt = sourceMessage.sent || props.source.created || '' const sentLabel = sentAt ? new Date(sentAt).toLocaleString() : 'an unknown time' - if (props.mode === 'reply') { + if (props.mode === ComposerMode.Reply) { const fromEmail = sourceMessage.replyTo?.[0]?.address || sourceMessage.from?.address to.value = fromEmail ? [fromEmail] : [] subject.value = /^Re:/i.test(originalSubject) ? originalSubject : `Re: ${originalSubject}` editor.value?.commands.setContent( - `
On ${sentLabel}, ${senderName} wrote:
${originalBody}`, + `
---------- Original message ---------
From: ${senderName}
Date: ${sentLabel}
Subject: ${originalSubject}
${originalBody}`, ) return } - if (props.mode === 'forward') { + if (props.mode === ComposerMode.Forward) { subject.value = /^Fwd:/i.test(originalSubject) ? originalSubject : `Fwd: ${originalSubject}` diff --git a/src/components/MessageList.vue b/src/components/MessageList.vue index e02ef19..b8a6db7 100644 --- a/src/components/MessageList.vue +++ b/src/components/MessageList.vue @@ -3,6 +3,7 @@ import { computed, onBeforeUnmount, ref } from 'vue' import type { EntityIdentifier } from '@MailManager/types/common' import type { EntityObject } from '@MailManager/models' import type { CollectionObject } from '@MailManager/models/collection' +import RecipientDetails from '@/components/common/RecipientDetails.vue' // Props interface Props { @@ -363,7 +364,11 @@ onBeforeUnmount(() => {