Skip to content

Commit 19c98cf

Browse files
authored
Merge pull request Expensify#68733 from nkdengineer/fix/67934
fix: missing Lock Icon on Last Enabled Distance Rate
2 parents 4cdf916 + 1cd74a4 commit 19c98cf

2 files changed

Lines changed: 14 additions & 7 deletions

File tree

src/pages/workspace/distanceRates/PolicyDistanceRateDetailsPage.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ function PolicyDistanceRateDetailsPage({route}: PolicyDistanceRateDetailsPagePro
156156
isOn={rate?.enabled ?? false}
157157
onToggle={toggleRate}
158158
accessibilityLabel={translate('workspace.distanceRates.enableRate')}
159+
showLockIcon={!canDisableOrDeleteRate}
159160
/>
160161
</View>
161162
</OfflineWithFeedback>

src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)