diff --git a/src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx b/src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx index 6533d79e03b9..a70f3959ceb2 100644 --- a/src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx +++ b/src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx @@ -60,10 +60,12 @@ function PolicyDistanceRatesPage({policy, route}: PolicyDistanceRatesPageProps) [policy?.customUnits], ); const customUnitRates: Record = useMemo(() => customUnit?.rates ?? {}, [customUnit]); - const canDeleteSelectedRates = selectedDistanceRates.length !== Object.values(customUnitRates).length; - const canDisableSelectedRates = Object.values(customUnitRates) - .filter((rate: Rate) => !selectedDistanceRates.includes(rate)) - .some((rate) => rate.enabled); + // Filter out rates that will be deleted + const allSelectableRates = useMemo(() => Object.values(customUnitRates).filter((rate) => rate.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE), [customUnitRates]); + const canDisableOrDeleteSelectedRates = useMemo( + () => allSelectableRates.filter((rate: Rate) => !selectedDistanceRates.some((selectedRate) => selectedRate.customUnitRateID === rate.customUnitRateID)).some((rate) => rate.enabled), + [allSelectableRates, selectedDistanceRates], + ); function fetchDistanceRates() { Policy.openPolicyDistanceRatesPage(policyID); @@ -179,8 +181,6 @@ function PolicyDistanceRatesPage({policy, route}: PolicyDistanceRatesPageProps) }; const toggleAllRates = () => { - const allSelectableRates = Object.values(customUnitRates).filter((rate) => rate.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE); - if (selectedDistanceRates.length === allSelectableRates.length) { setSelectedDistanceRates([]); } else { @@ -201,7 +201,7 @@ function PolicyDistanceRatesPage({policy, route}: PolicyDistanceRatesPageProps) text: translate('workspace.distanceRates.deleteRates', {count: selectedDistanceRates.length}), value: CONST.POLICY.DISTANCE_RATES_BULK_ACTION_TYPES.DELETE, icon: Expensicons.Trashcan, - onSelected: () => (canDeleteSelectedRates ? setIsDeleteModalVisible(true) : setIsWarningModalVisible(true)), + onSelected: () => (canDisableOrDeleteSelectedRates ? setIsDeleteModalVisible(true) : setIsWarningModalVisible(true)), }, ]; @@ -211,7 +211,7 @@ function PolicyDistanceRatesPage({policy, route}: PolicyDistanceRatesPageProps) text: translate('workspace.distanceRates.disableRates', {count: enabledRates.length}), value: CONST.POLICY.DISTANCE_RATES_BULK_ACTION_TYPES.DISABLE, icon: Expensicons.DocumentSlash, - onSelected: () => (canDisableSelectedRates ? disableRates() : setIsWarningModalVisible(true)), + onSelected: () => (canDisableOrDeleteSelectedRates ? disableRates() : setIsWarningModalVisible(true)), }); }