@@ -176,24 +176,29 @@ function PolicyDistanceRatesPage({
176176 onNavigationCallBack : ( ) => Navigation . goBack ( ) ,
177177 } ) ;
178178
179+ const canDisableOrDeleteRate = useCallback (
180+ ( rateID : string ) : boolean => {
181+ return Object . values ( customUnit ?. rates ?? { } ) . some (
182+ ( distanceRate : Rate ) => distanceRate ?. enabled && rateID !== distanceRate ?. customUnitRateID && distanceRate ?. pendingAction !== CONST . RED_BRICK_ROAD_PENDING_ACTION . DELETE ,
183+ ) ;
184+ } ,
185+ [ customUnit ?. rates ] ,
186+ ) ;
187+
179188 const updateDistanceRateEnabled = useCallback (
180189 ( value : boolean , rateID : string ) => {
181190 if ( ! customUnit ) {
182191 return ;
183192 }
184193 const rate = customUnit ?. rates ?. [ rateID ] ;
185194 // Rates can be disabled or deleted as long as in the remaining rates there is always at least one enabled rate and there are no pending delete actions
186- const canDisableOrDeleteRate = Object . values ( customUnit ?. rates ?? { } ) . some (
187- ( distanceRate : Rate ) => distanceRate ?. enabled && rateID !== distanceRate ?. customUnitRateID && distanceRate ?. pendingAction !== CONST . RED_BRICK_ROAD_PENDING_ACTION . DELETE ,
188- ) ;
189-
190- if ( ! rate ?. enabled || canDisableOrDeleteRate ) {
195+ if ( ! rate ?. enabled || canDisableOrDeleteRate ( rateID ) ) {
191196 setPolicyDistanceRatesEnabled ( policyID , customUnit , [ { ...rate , enabled : value } ] ) ;
192197 } else {
193198 setIsWarningModalVisible ( true ) ;
194199 }
195200 } ,
196- [ customUnit , policyID ] ,
201+ [ canDisableOrDeleteRate , customUnit , policyID ] ,
197202 ) ;
198203
199204 const distanceRatesList = useMemo < RateForList [ ] > (
@@ -221,11 +226,12 @@ function PolicyDistanceRatesPage({
221226 isOn = { ! ! value ?. enabled }
222227 accessibilityLabel = { translate ( 'workspace.distanceRates.trackTax' ) }
223228 onToggle = { ( newValue : boolean ) => updateDistanceRateEnabled ( newValue , value . customUnitRateID ) }
229+ showLockIcon = { ! canDisableOrDeleteRate ( value . customUnitRateID ) }
224230 disabled = { value . pendingAction === CONST . RED_BRICK_ROAD_PENDING_ACTION . DELETE }
225231 />
226232 ) ,
227233 } ) ) ,
228- [ customUnitRates , translate , customUnit , policy ?. pendingAction , updateDistanceRateEnabled ] ,
234+ [ canDisableOrDeleteRate , customUnitRates , translate , customUnit , policy ?. pendingAction , updateDistanceRateEnabled ] ,
229235 ) ;
230236
231237 const filterRate = useCallback ( ( rate : RateForList , searchInput : string ) => {
0 commit comments