diff --git a/lib/CompositionManager.php b/lib/CompositionManager.php index f10c105..0f225ff 100644 --- a/lib/CompositionManager.php +++ b/lib/CompositionManager.php @@ -10,6 +10,7 @@ use KTXF\Mail\Object\AddressInterface; use KTXF\Mail\Object\MessagePart; use KTXF\Mail\Object\MessagePropertiesMutableInterface; use KTXF\Mail\Service\ServiceEntitySubmitInterface; +use KTXF\Mail\Submission\EntitySubmitResult; use KTXF\Resource\Identifier\EntityIdentifierInterface; use KTXF\Resource\Identifier\ResourceIdentifier; use KTXF\Utile\UUID; @@ -158,7 +159,7 @@ class CompositionManager { if ($sender['address'] === '' || !filter_var($sender['address'], FILTER_VALIDATE_EMAIL)) { $result['disposition'] = 'error'; $result['error'] = [ - 'type' => 'invalid_sender', + 'type' => 'composition_invalid_sender', 'message' => 'Invalid sender address', ]; return $result; @@ -171,15 +172,19 @@ class CompositionManager { if ($service === null || $service->getEnabled() === false) { return [ 'disposition' => 'error', - 'errorCode' => 'service_not_found', - 'errorMessage' => "Service not found for sender '$senderAddress' or service is disabled", + 'error' => [ + 'type' => 'service_not_found', + 'message' => "Service not found for sender '$senderAddress' or service is disabled", + ], ]; } if ($service instanceof ServiceEntitySubmitInterface === false) { return [ 'disposition' => 'error', - 'errorCode' => 'service_not_supported', - 'errorMessage' => "Service '{$service->identifier()}' does not support entity submission", + 'error' => [ + 'type' => 'service_not_supported', + 'message' => "Service '{$service->identifier()}' does not support entity submission", + ], ]; } @@ -197,7 +202,21 @@ class CompositionManager { $sendResult = $service->entitySubmit($senderObject, $source, $properties); - return $sendResult->jsonSerialize(); + if ($sendResult->disposition === EntitySubmitResult::DISPOSITION_ERROR) { + return [ + 'identifier' => $identifier, + 'disposition' => 'error', + 'error' => [ + 'type' => 'service_submission_error', + 'message' => $sendResult->errorMessage ?? 'An unknown error occurred during submission', + ], + ]; + } + + return [ + 'identifier' => $identifier, + 'disposition' => 'sent' + ]; } private function buildMessageProperties( diff --git a/src/components/MessageReader.vue b/src/components/MessageReader.vue index 56f782e..3a11cb8 100644 --- a/src/components/MessageReader.vue +++ b/src/components/MessageReader.vue @@ -3,7 +3,7 @@ import { computed, ref, watch } from 'vue' import { useUser } from '@KTXC' import type { EntityObject, MessageObject } from '@MailManager/models' import { SecurityLevel } from '@/utile/emailSanitizer' -import { useMailStore } from '@/stores/mailStore' +import { useMailUiStore } from '@/stores/mailUiStore' import ReaderEmpty from './reader/ReaderEmpty.vue' import ReaderToolbar from './reader/ReaderToolbar.vue' import ReaderHeader from './reader/ReaderHeader.vue' @@ -26,7 +26,7 @@ const emit = defineEmits<{ // User settings const { getSetting } = useUser() -const mailStore = useMailStore() +const mailUiStore = useMailUiStore() // Per-message overrides const allowImages = ref(false) @@ -101,7 +101,7 @@ const handleDownload = async (partIndex?: number) => { return } - await mailStore.downloadMessage(props.entity, partIndex) + await mailUiStore.downloadMessage(props.entity, partIndex) } const handleFlag = () => { diff --git a/src/components/common/RecipientDetails.vue b/src/components/common/RecipientDetails.vue index 54282e9..ad82376 100644 --- a/src/components/common/RecipientDetails.vue +++ b/src/components/common/RecipientDetails.vue @@ -1,6 +1,5 @@