@@ -5,6 +5,7 @@ import { useDisplay } from 'vuetify'
|
||||
import { useModuleStore } from '@KTXC'
|
||||
import { useMailStore } from '@/stores/mailStore'
|
||||
import type { CollectionObject, EntityObject } from '@MailManager/models'
|
||||
import type { EntityIdentifier } from '@MailManager/types/common'
|
||||
import FolderTree from '@/components/FolderTree.vue'
|
||||
import MessageList from '@/components/MessageList.vue'
|
||||
import MessageReader from '@/components/MessageReader.vue'
|
||||
@@ -32,19 +33,23 @@ const {
|
||||
loading,
|
||||
selectedFolder,
|
||||
selectedMessage,
|
||||
selectedMessageIds,
|
||||
selectionModeActive,
|
||||
selectionList,
|
||||
selectionMode,
|
||||
composeMode,
|
||||
composeReplyTo,
|
||||
currentMessages,
|
||||
moveDialogVisible,
|
||||
selectionCount,
|
||||
hasSelection,
|
||||
allCurrentMessagesSelected,
|
||||
moveDialogCandidates,
|
||||
} = storeToRefs(mailStore)
|
||||
|
||||
// Complex store/composable objects accessed directly (not simple refs)
|
||||
const { mailSync, entitiesStore } = mailStore
|
||||
|
||||
const lastSyncLabel = computed(() => {
|
||||
if (!mailSync.lastSync.value) return ''
|
||||
return `(Last: ${new Date(mailSync.lastSync.value).toLocaleTimeString()})`
|
||||
})
|
||||
|
||||
// Initialize
|
||||
onMounted(async () => {
|
||||
if (!isMailManagerAvailable.value) return
|
||||
@@ -71,23 +76,24 @@ const handleSelectAllToggle = (value: boolean) => {
|
||||
|
||||
const handleSelectionClear = () => mailStore.deactivateSelectionMode()
|
||||
|
||||
const handleSelectionMove = () => mailStore.openMoveDialogForSelection()
|
||||
const handleSelectionMove = () => mailStore.openMoveDialog()
|
||||
|
||||
const handleCompose = (replyTo?: EntityObject) => mailStore.openCompose(replyTo)
|
||||
const handleSelectionDelete = () => mailStore.deleteMessages([...selectionList.value])
|
||||
|
||||
const handleCompose = (message?: EntityObject) => mailStore.openCompose(message)
|
||||
|
||||
const handleComposeClose = () => mailStore.closeCompose()
|
||||
|
||||
const handleComposeSent = () => mailStore.afterSent()
|
||||
|
||||
const handleReply = (message: EntityObject) => mailStore.openCompose(message)
|
||||
|
||||
const handleDelete = (message: EntityObject) => mailStore.deleteMessage(message)
|
||||
const handleDelete = (message: EntityObject) => {
|
||||
const id = `${message.provider}:${String(message.service)}:${String(message.collection)}:${String(message.identifier)}` as EntityIdentifier
|
||||
mailStore.deleteMessages([id])
|
||||
}
|
||||
|
||||
const handleMove = (message: EntityObject) => mailStore.openMoveDialog(message)
|
||||
|
||||
const handleMoveConfirm = async (folder: CollectionObject) => {
|
||||
await mailStore.moveMessages(folder)
|
||||
}
|
||||
const handleMoveConfirm = async (target: CollectionObject) => { await mailStore.moveMessages(target, moveDialogCandidates.value ?? []) }
|
||||
|
||||
const handleMoveCancel = () => mailStore.closeMoveDialog()
|
||||
|
||||
@@ -150,7 +156,7 @@ const handleFolderCreated = (folder: CollectionObject) => mailStore.notify(`Fold
|
||||
>
|
||||
<v-icon>mdi-refresh</v-icon>
|
||||
<v-tooltip activator="parent" location="bottom">
|
||||
Refresh {{ mailSync.lastSync ? `(Last: ${new Date(mailSync.lastSync).toLocaleTimeString()})` : '' }}
|
||||
Refresh {{ lastSyncLabel }}
|
||||
</v-tooltip>
|
||||
</v-btn>
|
||||
|
||||
@@ -201,13 +207,10 @@ const handleFolderCreated = (folder: CollectionObject) => mailStore.notify(`Fold
|
||||
<div class="mail-list-panel">
|
||||
<MessageList
|
||||
:messages="currentMessages"
|
||||
:selected-message="selectedMessage"
|
||||
:selected-message-ids="selectedMessageIds"
|
||||
:selection-mode-active="selectionModeActive"
|
||||
:selection-count="selectionCount"
|
||||
:has-selection="hasSelection"
|
||||
:all-current-messages-selected="allCurrentMessagesSelected"
|
||||
:selected-collection="selectedFolder"
|
||||
:selected-message="selectedMessage"
|
||||
:selection-list="selectionList"
|
||||
:selection-mode="selectionMode"
|
||||
:loading="loading"
|
||||
@open="handleMessageOpen"
|
||||
@toggle-selection="handleMessageSelectionToggle"
|
||||
@@ -215,6 +218,7 @@ const handleFolderCreated = (folder: CollectionObject) => mailStore.notify(`Fold
|
||||
@toggle-select-all="handleSelectAllToggle"
|
||||
@clear-selection="handleSelectionClear"
|
||||
@move-selection="handleSelectionMove"
|
||||
@delete-selection="handleSelectionDelete"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -235,7 +239,6 @@ const handleFolderCreated = (folder: CollectionObject) => mailStore.notify(`Fold
|
||||
@reply="handleCompose"
|
||||
@move="handleMove"
|
||||
@delete="handleDelete"
|
||||
@compose="handleCompose()"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user