@@ -8,6 +8,7 @@ import { useAppTranslation } from "@src/i18n/TranslationContext"
88import { AutoApproveToggle , AutoApproveSetting , autoApproveSettingsConfig } from "../settings/AutoApproveToggle"
99import { StandardTooltip } from "@src/components/ui"
1010import { useAutoApprovalState } from "@src/hooks/useAutoApprovalState"
11+ import { useAutoApprovalToggles } from "@src/hooks/useAutoApprovalToggles"
1112
1213interface AutoApproveMenuProps {
1314 style ?: React . CSSProperties
@@ -19,16 +20,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
1920 const {
2021 autoApprovalEnabled,
2122 setAutoApprovalEnabled,
22- alwaysAllowReadOnly,
23- alwaysAllowWrite,
24- alwaysAllowExecute,
25- alwaysAllowBrowser,
26- alwaysAllowMcp,
27- alwaysAllowModeSwitch,
28- alwaysAllowSubtasks,
2923 alwaysApproveResubmit,
30- alwaysAllowFollowupQuestions,
31- alwaysAllowUpdateTodoList,
3224 allowedMaxRequests,
3325 setAlwaysAllowReadOnly,
3426 setAlwaysAllowWrite,
@@ -45,31 +37,15 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
4537
4638 const { t } = useAppTranslation ( )
4739
40+ const baseToggles = useAutoApprovalToggles ( )
41+
42+ // AutoApproveMenu needs alwaysApproveResubmit in addition to the base toggles
4843 const toggles = useMemo (
4944 ( ) => ( {
50- alwaysAllowReadOnly : alwaysAllowReadOnly ,
51- alwaysAllowWrite : alwaysAllowWrite ,
52- alwaysAllowExecute : alwaysAllowExecute ,
53- alwaysAllowBrowser : alwaysAllowBrowser ,
54- alwaysAllowMcp : alwaysAllowMcp ,
55- alwaysAllowModeSwitch : alwaysAllowModeSwitch ,
56- alwaysAllowSubtasks : alwaysAllowSubtasks ,
45+ ...baseToggles ,
5746 alwaysApproveResubmit : alwaysApproveResubmit ,
58- alwaysAllowFollowupQuestions : alwaysAllowFollowupQuestions ,
59- alwaysAllowUpdateTodoList : alwaysAllowUpdateTodoList ,
6047 } ) ,
61- [
62- alwaysAllowReadOnly ,
63- alwaysAllowWrite ,
64- alwaysAllowExecute ,
65- alwaysAllowBrowser ,
66- alwaysAllowMcp ,
67- alwaysAllowModeSwitch ,
68- alwaysAllowSubtasks ,
69- alwaysApproveResubmit ,
70- alwaysAllowFollowupQuestions ,
71- alwaysAllowUpdateTodoList ,
72- ] ,
48+ [ baseToggles , alwaysApproveResubmit ] ,
7349 )
7450
7551 const { hasEnabledOptions, effectiveAutoApprovalEnabled } = useAutoApprovalState ( toggles , autoApprovalEnabled )
@@ -198,30 +174,26 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
198174 } }
199175 onClick = { toggleExpanded } >
200176 < div onClick = { ( e ) => e . stopPropagation ( ) } >
201- { ! hasEnabledOptions ? (
202- < StandardTooltip content = { t ( "chat:autoApprove.selectOptionsFirst" ) } >
203- < VSCodeCheckbox
204- checked = { effectiveAutoApprovalEnabled }
205- disabled = { isCheckboxDisabled }
206- aria-label = { t ( "chat:autoApprove.disabledAriaLabel" ) }
207- onChange = { ( ) => {
208- // Show a message or do nothing
209- return
210- } }
211- />
212- </ StandardTooltip >
213- ) : (
177+ < StandardTooltip
178+ content = { ! hasEnabledOptions ? t ( "chat:autoApprove.selectOptionsFirst" ) : undefined } >
214179 < VSCodeCheckbox
215180 checked = { effectiveAutoApprovalEnabled }
216181 disabled = { isCheckboxDisabled }
217- aria-label = { t ( "chat:autoApprove.toggleAriaLabel" ) }
182+ aria-label = {
183+ hasEnabledOptions
184+ ? t ( "chat:autoApprove.toggleAriaLabel" )
185+ : t ( "chat:autoApprove.disabledAriaLabel" )
186+ }
218187 onChange = { ( ) => {
219- const newValue = ! ( autoApprovalEnabled ?? false )
220- setAutoApprovalEnabled ( newValue )
221- vscode . postMessage ( { type : "autoApprovalEnabled" , bool : newValue } )
188+ if ( hasEnabledOptions ) {
189+ const newValue = ! ( autoApprovalEnabled ?? false )
190+ setAutoApprovalEnabled ( newValue )
191+ vscode . postMessage ( { type : "autoApprovalEnabled" , bool : newValue } )
192+ }
193+ // If no options enabled, do nothing
222194 } }
223195 />
224- ) }
196+ </ StandardTooltip >
225197 </ div >
226198 < div
227199 style = { {
0 commit comments