feat: multi select

Signed-off-by: Sebastian <krupinski01@gmail.com>
This commit is contained in:
2026-03-29 17:02:00 -04:00
parent 07c205a427
commit 69f3c430cc
4 changed files with 508 additions and 80 deletions

View File

@@ -32,10 +32,15 @@ const {
loading,
selectedFolder,
selectedMessage,
selectedMessageIds,
selectionModeActive,
composeMode,
composeReplyTo,
currentMessages,
moveDialogVisible,
selectionCount,
hasSelection,
allCurrentMessagesSelected,
} = storeToRefs(mailStore)
// Complex store/composable objects accessed directly (not simple refs)
@@ -50,7 +55,24 @@ onMounted(async () => {
// Handlers — thin wrappers that delegate to the store
const handleFolderSelect = (folder: CollectionObject) => mailStore.selectFolder(folder)
const handleMessageSelect = (message: EntityObject) => mailStore.selectMessage(message, isMobile.value)
const handleMessageOpen = (message: EntityObject) => mailStore.selectMessage(message, isMobile.value)
const handleMessageSelectionToggle = (message: EntityObject) => mailStore.toggleMessageSelection(message)
const handleSelectionModeActivate = (message: EntityObject) => mailStore.activateSelectionMode(message)
const handleSelectAllToggle = (value: boolean) => {
if (value) {
mailStore.selectAllCurrentMessages()
return
}
mailStore.clearSelection()
}
const handleSelectionClear = () => mailStore.deactivateSelectionMode()
const handleSelectionMove = () => mailStore.openMoveDialogForSelection()
const handleCompose = (replyTo?: EntityObject) => mailStore.openCompose(replyTo)
@@ -65,7 +87,7 @@ const handleDelete = (message: EntityObject) => mailStore.deleteMessage(message)
const handleMove = (message: EntityObject) => mailStore.openMoveDialog(message)
const handleMoveConfirm = async (folder: CollectionObject) => {
await mailStore.moveMessage(folder)
await mailStore.moveMessages(folder)
}
const handleMoveCancel = () => mailStore.closeMoveDialog()
@@ -181,9 +203,19 @@ const handleFolderCreated = (folder: CollectionObject) => mailStore.notify(`Fold
<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"
:loading="loading"
@select="handleMessageSelect"
@open="handleMessageOpen"
@toggle-selection="handleMessageSelectionToggle"
@activate-selection-mode="handleSelectionModeActivate"
@toggle-select-all="handleSelectAllToggle"
@clear-selection="handleSelectionClear"
@move-selection="handleSelectionMove"
/>
</div>