@@ -4,14 +4,13 @@ import { storeToRefs } from 'pinia'
|
||||
import { useDisplay } from 'vuetify'
|
||||
import { useModuleStore } from '@KTXC'
|
||||
import { useMailStore } from '@/stores/mailStore'
|
||||
import type { CollectionObject, EntityObject } from '@MailManager/models'
|
||||
import FolderTree from '@/components/FolderTree.vue'
|
||||
import MessageList from '@/components/MessageList.vue'
|
||||
import MessageReader from '@/components/MessageReader.vue'
|
||||
import MessageComposer from '@/components/MessageComposer.vue'
|
||||
import FolderSelectionDialog from '@/components/FolderSelectionDialog.vue'
|
||||
import SettingsDialog from '@/components/settings/SettingsDialog.vue'
|
||||
import type { EntityInterface } from '@MailManager/types/entity'
|
||||
import type { MessageInterface } from '@MailManager/types/message'
|
||||
import type { CollectionObject } from '@MailManager/models'
|
||||
|
||||
// Vuetify display for responsive behavior
|
||||
const display = useDisplay()
|
||||
@@ -36,6 +35,7 @@ const {
|
||||
composeMode,
|
||||
composeReplyTo,
|
||||
currentMessages,
|
||||
moveDialogVisible,
|
||||
} = storeToRefs(mailStore)
|
||||
|
||||
// Complex store/composable objects accessed directly (not simple refs)
|
||||
@@ -50,17 +50,25 @@ onMounted(async () => {
|
||||
// Handlers — thin wrappers that delegate to the store
|
||||
const handleFolderSelect = (folder: CollectionObject) => mailStore.selectFolder(folder)
|
||||
|
||||
const handleMessageSelect = (message: EntityInterface<MessageInterface>) => mailStore.selectMessage(message, isMobile.value)
|
||||
const handleMessageSelect = (message: EntityObject) => mailStore.selectMessage(message, isMobile.value)
|
||||
|
||||
const handleCompose = (replyTo?: EntityInterface<MessageInterface>) => mailStore.openCompose(replyTo)
|
||||
const handleCompose = (replyTo?: EntityObject) => mailStore.openCompose(replyTo)
|
||||
|
||||
const handleComposeClose = () => mailStore.closeCompose()
|
||||
|
||||
const handleComposeSent = () => mailStore.afterSent()
|
||||
|
||||
const handleReply = (message: EntityInterface<MessageInterface>) => mailStore.openCompose(message)
|
||||
const handleReply = (message: EntityObject) => mailStore.openCompose(message)
|
||||
|
||||
const handleDelete = (message: EntityInterface<MessageInterface>) => mailStore.deleteMessage(message)
|
||||
const handleDelete = (message: EntityObject) => mailStore.deleteMessage(message)
|
||||
|
||||
const handleMove = (message: EntityObject) => mailStore.openMoveDialog(message)
|
||||
|
||||
const handleMoveConfirm = async (folder: CollectionObject) => {
|
||||
await mailStore.moveMessage(folder)
|
||||
}
|
||||
|
||||
const handleMoveCancel = () => mailStore.closeMoveDialog()
|
||||
|
||||
const toggleSidebar = () => mailStore.toggleSidebar()
|
||||
|
||||
@@ -193,6 +201,7 @@ const handleFolderCreated = (folder: CollectionObject) => mailStore.notify(`Fold
|
||||
v-else
|
||||
:message="selectedMessage"
|
||||
@reply="handleReply"
|
||||
@move="handleMove"
|
||||
@delete="handleDelete"
|
||||
@compose="handleCompose()"
|
||||
/>
|
||||
@@ -203,6 +212,16 @@ const handleFolderCreated = (folder: CollectionObject) => mailStore.notify(`Fold
|
||||
|
||||
<!-- Settings Dialog -->
|
||||
<SettingsDialog v-model="settingsDialogVisible" />
|
||||
|
||||
<FolderSelectionDialog
|
||||
v-model="moveDialogVisible"
|
||||
:loading="loading"
|
||||
title="Move To"
|
||||
confirm-text="Move"
|
||||
empty-text="No other folders are available in this account."
|
||||
@select="handleMoveConfirm"
|
||||
@cancel="handleMoveCancel"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user