From 228572a1f8fd320123947b7aca1143058ff9bf0c Mon Sep 17 00:00:00 2001 From: iliya Date: Sun, 29 Mar 2026 22:56:19 +0300 Subject: [PATCH] fix(team): target correct team in Allow all and Settings panel Allow all button and ToolApprovalSettingsPanel now use current approval's teamName instead of selectedTeamName. Prevents applying settings to wrong team when approval comes from a different team than the one currently viewed. --- .../components/team/ToolApprovalSheet.tsx | 6 ++++-- .../team/dialogs/ToolApprovalSettingsPanel.tsx | 15 +++++++++++---- src/renderer/store/slices/teamSlice.ts | 9 ++++++--- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/renderer/components/team/ToolApprovalSheet.tsx b/src/renderer/components/team/ToolApprovalSheet.tsx index 8f66578c..ac530c93 100644 --- a/src/renderer/components/team/ToolApprovalSheet.tsx +++ b/src/renderer/components/team/ToolApprovalSheet.tsx @@ -408,7 +408,9 @@ export const ToolApprovalSheet: React.FC = () => { ); -export const ToolApprovalSettingsContent: React.FC<{ expanded: boolean }> = ({ expanded }) => { +export const ToolApprovalSettingsContent: React.FC<{ + expanded: boolean; + teamName?: string; +}> = ({ expanded, teamName }) => { const [localSeconds, setLocalSeconds] = useState(''); const settings = useStore((s) => s.toolApprovalSettings); - const updateSettings = useStore((s) => s.updateToolApprovalSettings); + const rawUpdateSettings = useStore((s) => s.updateToolApprovalSettings); + const updateSettings = useCallback( + (patch: Partial) => rawUpdateSettings(patch, teamName), + [rawUpdateSettings, teamName] + ); if (!expanded) return null; diff --git a/src/renderer/store/slices/teamSlice.ts b/src/renderer/store/slices/teamSlice.ts index 631a5a74..f6555d2a 100644 --- a/src/renderer/store/slices/teamSlice.ts +++ b/src/renderer/store/slices/teamSlice.ts @@ -696,7 +696,10 @@ export interface TeamSlice { /** Resolved permission approvals: request_id → allowed (true/false). Used for noise row icons. */ resolvedApprovals: Map; toolApprovalSettings: ToolApprovalSettings; - updateToolApprovalSettings: (patch: Partial) => Promise; + updateToolApprovalSettings: ( + patch: Partial, + forTeam?: string + ) => Promise; respondToToolApproval: ( teamName: string, runId: string, @@ -2347,8 +2350,8 @@ export const createTeamSlice: StateCreator = (set, set({ provisioningProgressUnsubscribe: unsubscribe }); }, - updateToolApprovalSettings: async (patch) => { - const teamName = get().selectedTeamName; + updateToolApprovalSettings: async (patch, forTeam) => { + const teamName = forTeam ?? get().selectedTeamName; const current = get().toolApprovalSettings; const merged = { ...current, ...patch }; set({ toolApprovalSettings: merged });