From 339cd4b9ab8226c7c1922cdcc5e4cfecff0bf1c2 Mon Sep 17 00:00:00 2001
From: Linus Rath <139418639+rathlinus@users.noreply.github.com>
Date: Wed, 28 Oct 2026 10:46:20 +0100
Subject: [PATCH] fix: put Delete folder last in the folder menu, after Refresh
---
.../mailbox-context-menu-order.test.tsx | 34 +++++++++++++++++++
components/layout/mailbox-context-menu.tsx | 16 ++++-----
2 files changed, 41 insertions(+), 9 deletions(-)
create mode 100644 components/layout/__tests__/mailbox-context-menu-order.test.tsx
diff --git a/components/layout/__tests__/mailbox-context-menu-order.test.tsx b/components/layout/__tests__/mailbox-context-menu-order.test.tsx
new file mode 100644
index 000000000..947fb0062
--- /dev/null
+++ b/components/layout/__tests__/mailbox-context-menu-order.test.tsx
@@ -0,0 +1,34 @@
+import { render, screen } from '@testing-library/react';
+import { describe, expect, it, vi } from 'vitest';
+import type { Mailbox } from '@/lib/jmap/types';
+
+// R6: destructive entries come last. The folder menu had Refresh after
+// "Delete folder".
+
+vi.mock('@/components/email/rules-menu', () => ({ FolderRulesSubMenu: () => null }));
+
+const { MailboxContextMenu } = await import('../mailbox-context-menu');
+
+const folder = { id: 'p', name: 'Projects', sortOrder: 1, totalEmails: 2, unreadEmails: 0, myRights: {} } as unknown as Mailbox;
+
+describe('MailboxContextMenu', () => {
+ it('ends with Empty folder and Delete folder', () => {
+ render(
+ ,
+ );
+ const labels = screen.getAllByRole('menuitem').map((item) => item.textContent);
+ expect(labels.slice(-2)).toEqual(['empty_folder_generic', 'delete_folder']);
+ expect(labels).toContain('refresh');
+ });
+});
diff --git a/components/layout/mailbox-context-menu.tsx b/components/layout/mailbox-context-menu.tsx
index bb2f8d34a..afaf59d08 100644
--- a/components/layout/mailbox-context-menu.tsx
+++ b/components/layout/mailbox-context-menu.tsx
@@ -293,7 +293,14 @@ export function MailboxContextMenu({
onClick={() => handleAction(() => onImportEmail?.(mailbox.id))}
disabled={!onImportEmail || !canAddItems}
/>
+ handleAction(onRefresh!)}
+ disabled={!onRefresh}
+ />
+ {/* Destructive entries last (R6). */}
-
-
-
- handleAction(onRefresh!)}
- disabled={!onRefresh}
- />
);
}