From 1f01f2182a988f36fc7ae3c18bb50db82d7a3283 Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Wed, 15 Jul 2026 13:03:36 +0200 Subject: [PATCH] fix: React infinite loop - use primitive deps for toolbar registration - Replace selectedMail object with selectedMailId and selectedMailFlagged primitives - Prevents useEffect infinite re-render loop --- frontend/src/pages/Mail.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/src/pages/Mail.tsx b/frontend/src/pages/Mail.tsx index 49f7dec..0f88614 100644 --- a/frontend/src/pages/Mail.tsx +++ b/frontend/src/pages/Mail.tsx @@ -283,8 +283,10 @@ export function MailPage() { // Register toolbar items const { registerItems, unregisterPlugin } = usePluginToolbarStore(); + const selectedMailId = selectedMail?.id; + const selectedMailFlagged = selectedMail?.is_flagged; useEffect(() => { - const hasMail = !!selectedMail; + const hasMail = !!selectedMailId; registerItems('mail', [ { id: 'account-select', @@ -337,7 +339,7 @@ export function MailPage() { label: 'Flagge', group: 'mail-actions', disabled: !hasMail, - active: selectedMail?.is_flagged, + active: selectedMailFlagged, icon: , onClick: () => selectedMail && handleToggleFlag(selectedMail), }, @@ -368,7 +370,7 @@ export function MailPage() { }, ]); return () => unregisterPlugin('mail'); - }, [registerItems, unregisterPlugin, accounts, selectedAccountId, selectedMail, handleAccountSwitch, handleSearch, handleCompose, handleReply, handleForward, handleToggleFlag, handleCreateEvent]); + }, [registerItems, unregisterPlugin, accounts, selectedAccountId, selectedMailId, selectedMailFlagged, handleAccountSwitch, handleSearch, handleCompose, handleReply, handleForward, handleToggleFlag, handleCreateEvent]); if (loadingAccounts) { return (