diff --git a/components/email/email-context-menu.tsx b/components/email/email-context-menu.tsx index 983fd526..bd9c41fa 100644 --- a/components/email/email-context-menu.tsx +++ b/components/email/email-context-menu.tsx @@ -66,6 +66,7 @@ interface EmailContextMenuProps { // Batch actions onBatchMarkAsRead?: (read: boolean) => void; onBatchDelete?: () => void; + onBatchArchive?: () => void; onBatchMoveToMailbox?: (mailboxId: string) => void; onBatchMarkAsSpam?: () => void; onBatchUndoSpam?: () => void; @@ -127,6 +128,7 @@ export function EmailContextMenu({ onUndoSpam, onBatchMarkAsRead, onBatchDelete, + onBatchArchive, onBatchMoveToMailbox, onBatchMarkAsSpam, onBatchUndoSpam, @@ -235,8 +237,10 @@ export function EmailContextMenu({ handleAction(onArchive!)} - disabled={!onArchive} + onClick={() => + handleAction(showBatchActions ? onBatchArchive! : onArchive!) + } + disabled={showBatchActions ? !onBatchArchive : !onArchive} /> {/* Delete */} diff --git a/components/email/email-list.tsx b/components/email/email-list.tsx index 7de11036..8ac0ccf5 100644 --- a/components/email/email-list.tsx +++ b/components/email/email-list.tsx @@ -496,6 +496,14 @@ export function EmailList({ onEditDraft={() => onEditDraft?.(contextMenu.data!)} onBatchMarkAsRead={(read) => client && batchMarkAsRead(client, read)} onBatchDelete={() => client && batchDelete(client)} + onBatchArchive={async () => { + if (!onArchive) return; + const selected = emails.filter((e) => selectedEmailIds.has(e.id)); + for (const email of selected) { + await onArchive(email); + } + clearSelection(); + }} onBatchMoveToMailbox={(mailboxId) => client && batchMoveToMailbox(client, mailboxId)} onBatchMarkAsSpam={async () => { if (client) {