From 9f2a7c950af42e302e8ba5a0e40ea884732a37a4 Mon Sep 17 00:00:00 2001 From: iliya Date: Sat, 28 Mar 2026 15:40:56 +0200 Subject: [PATCH] fix(team): fix hooks ordering crash in ToolApprovalSheet Move useMemo for sourceColor BEFORE the early return (if !current), and restore teamSummary/teamColor/displayName variables that were accidentally removed. Fixes 'Rendered fewer/more hooks' React crash. --- .../components/team/ToolApprovalSheet.tsx | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/renderer/components/team/ToolApprovalSheet.tsx b/src/renderer/components/team/ToolApprovalSheet.tsx index ccb876c6..d6e3fc66 100644 --- a/src/renderer/components/team/ToolApprovalSheet.tsx +++ b/src/renderer/components/team/ToolApprovalSheet.tsx @@ -182,22 +182,20 @@ export const ToolApprovalSheet: React.FC = () => { return () => document.removeEventListener('keydown', handleKeyDown); }, [handleRespond]); + // Resolve teammate color for MemberBadge (when source !== 'lead') + const sourceColor = useMemo(() => { + if (!current || current.source === 'lead') return undefined; + const member = selectedTeamData?.members?.find((m) => m.name === current.source); + return member?.color; + }, [current, selectedTeamData?.members]); + if (!current) return null; - // Prefer color from the approval itself (always available, even during provisioning), - // fall back to teams list, then getTeamColorSet hashes unknown names into TEAMMATE_COLORS. const teamSummary = teams.find((t) => t.teamName === current.teamName); const colorName = current.teamColor ?? teamSummary?.color ?? current.teamName; const teamColor = getTeamColorSet(colorName); const displayName = current.teamDisplayName ?? teamSummary?.displayName ?? current.teamName; - // Resolve teammate color for MemberBadge (when source !== 'lead') - const sourceColor = useMemo(() => { - if (current.source === 'lead') return undefined; - const member = selectedTeamData?.members?.find((m) => m.name === current.source); - return member?.color; - }, [current.source, selectedTeamData?.members]); - return ( <> {/* Backdrop overlay */}