From f11e7eb4cd06ccb35b4b89f137fc3d825e49039d Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Thu, 23 May 2024 10:37:31 +0700 Subject: [PATCH 01/13] update default rate --- src/libs/DistanceRequestUtils.ts | 93 ++++++++++++------- src/libs/Permissions.ts | 2 +- .../step/IOURequestStepDistanceRate.tsx | 2 +- 3 files changed, 60 insertions(+), 37 deletions(-) diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index 9cb48534214e..4104fd64259f 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -38,6 +38,48 @@ Onyx.connect({ const METERS_TO_KM = 0.001; // 1 kilometer is 1000 meters const METERS_TO_MILES = 0.000621371; // There are approximately 0.000621371 miles in a meter +/** + * Retrieves the mileage rates for given policy. + * + * @param policy - The policy from which to extract the mileage rates. + * + * @returns An array of mileage rates or an empty array if not found. + */ +function getMileageRates(policy: OnyxEntry, includeDisableRate: boolean = true): Record { + const mileageRates: Record = {}; + + if (!policy || !policy?.customUnits) { + return mileageRates; + } + + const distanceUnit = Object.values(policy.customUnits).find((unit) => unit.name === CONST.CUSTOM_UNITS.NAME_DISTANCE); + if (!distanceUnit?.rates) { + return mileageRates; + } + + Object.entries(distanceUnit.rates).forEach(([rateID, rate]) => { + if (includeDisableRate) { + mileageRates[rateID] = { + rate: rate.rate, + currency: rate.currency, + unit: distanceUnit.attributes.unit, + name: rate.name, + customUnitRateID: rate.customUnitRateID, + } + } else if(rate.enabled) { + mileageRates[rateID] = { + rate: rate.rate, + currency: rate.currency, + unit: distanceUnit.attributes.unit, + name: rate.name, + customUnitRateID: rate.customUnitRateID, + } + } + }); + + return mileageRates; +} + /** * Retrieves the default mileage rate based on a given policy. * @@ -57,8 +99,9 @@ function getDefaultMileageRate(policy: OnyxEntry | EmptyObject): Mileage if (!distanceUnit?.rates) { return null; } - - const distanceRate = Object.values(distanceUnit.rates).find((rate) => rate.name === CONST.CUSTOM_UNITS.DEFAULT_RATE) ?? Object.values(distanceUnit.rates)[0]; + const mileageRates = getMileageRates(policy, false) + + const distanceRate = Object.values(mileageRates).find((rate) => rate.name === CONST.CUSTOM_UNITS.DEFAULT_RATE) ?? Object.values(mileageRates)[0]; return { customUnitRateID: distanceRate.customUnitRateID, @@ -179,38 +222,6 @@ function getDistanceMerchant( return `${distanceInUnits} @ ${ratePerUnit}`; } -/** - * Retrieves the mileage rates for given policy. - * - * @param policy - The policy from which to extract the mileage rates. - * - * @returns An array of mileage rates or an empty array if not found. - */ -function getMileageRates(policy: OnyxEntry): Record { - const mileageRates: Record = {}; - - if (!policy || !policy?.customUnits) { - return mileageRates; - } - - const distanceUnit = Object.values(policy.customUnits).find((unit) => unit.name === CONST.CUSTOM_UNITS.NAME_DISTANCE); - if (!distanceUnit?.rates) { - return mileageRates; - } - - Object.entries(distanceUnit.rates).forEach(([rateID, rate]) => { - mileageRates[rateID] = { - rate: rate.rate, - currency: rate.currency, - unit: distanceUnit.attributes.unit, - name: rate.name, - customUnitRateID: rate.customUnitRateID, - }; - }); - - return mileageRates; -} - /** * Retrieves the rate and unit for a P2P distance expense for a given currency. * @@ -259,8 +270,20 @@ function getCustomUnitRateID(reportID: string) { let customUnitRateID: string = CONST.CUSTOM_UNITS.FAKE_P2P_ID; + if (!policy?.customUnits) { + return null; + } + + const distanceUnit = Object.values(policy?.customUnits).find((unit) => unit.name === CONST.CUSTOM_UNITS.NAME_DISTANCE); + const lastSelectedDistanceRateID = lastSelectedDistanceRates?.[policy?.id ?? ''] ?? '' + const lastSelectedDistanceRate = distanceUnit?.rates[lastSelectedDistanceRateID] ?? {} + if (ReportUtils.isPolicyExpenseChat(report) || ReportUtils.isPolicyExpenseChat(parentReport)) { - customUnitRateID = lastSelectedDistanceRates?.[policy?.id ?? ''] ?? getDefaultMileageRate(policy)?.customUnitRateID ?? ''; + if (lastSelectedDistanceRate.enabled && lastSelectedDistanceRateID) { + customUnitRateID = lastSelectedDistanceRateID + } else { + customUnitRateID = getDefaultMileageRate(policy)?.customUnitRateID ?? ''; + } } return customUnitRateID; diff --git a/src/libs/Permissions.ts b/src/libs/Permissions.ts index 45551fe1cad9..f2b34b7efa9b 100644 --- a/src/libs/Permissions.ts +++ b/src/libs/Permissions.ts @@ -4,7 +4,7 @@ import type {IOUType} from '@src/CONST'; import type Beta from '@src/types/onyx/Beta'; function canUseAllBetas(betas: OnyxEntry): boolean { - return !!betas?.includes(CONST.BETAS.ALL); + return true } function canUseChronos(betas: OnyxEntry): boolean { diff --git a/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx b/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx index 1b9ccf1876cf..c5f2212d30f2 100644 --- a/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx +++ b/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx @@ -100,7 +100,7 @@ const IOURequestStepDistanceRateWithOnyx = withOnyx `${ONYXKEYS.COLLECTION.POLICY}${report?.policyID ?? '0'}`, - selector: DistanceRequestUtils.getMileageRates, + selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy, false) }, })(IOURequestStepDistanceRate); From b3de1796726c106401b8066ae4245fa161b46b74 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Thu, 23 May 2024 10:39:01 +0700 Subject: [PATCH 02/13] add comma --- src/libs/DistanceRequestUtils.ts | 18 +++++++++--------- src/libs/Permissions.ts | 2 +- .../step/IOURequestStepDistanceRate.tsx | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index 4104fd64259f..fadaeaaeb06f 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -65,18 +65,18 @@ function getMileageRates(policy: OnyxEntry, includeDisableRate: boolean unit: distanceUnit.attributes.unit, name: rate.name, customUnitRateID: rate.customUnitRateID, - } - } else if(rate.enabled) { + }; + } else if (rate.enabled) { mileageRates[rateID] = { rate: rate.rate, currency: rate.currency, unit: distanceUnit.attributes.unit, name: rate.name, customUnitRateID: rate.customUnitRateID, - } + }; } }); - + return mileageRates; } @@ -99,8 +99,8 @@ function getDefaultMileageRate(policy: OnyxEntry | EmptyObject): Mileage if (!distanceUnit?.rates) { return null; } - const mileageRates = getMileageRates(policy, false) - + const mileageRates = getMileageRates(policy, false); + const distanceRate = Object.values(mileageRates).find((rate) => rate.name === CONST.CUSTOM_UNITS.DEFAULT_RATE) ?? Object.values(mileageRates)[0]; return { @@ -275,12 +275,12 @@ function getCustomUnitRateID(reportID: string) { } const distanceUnit = Object.values(policy?.customUnits).find((unit) => unit.name === CONST.CUSTOM_UNITS.NAME_DISTANCE); - const lastSelectedDistanceRateID = lastSelectedDistanceRates?.[policy?.id ?? ''] ?? '' - const lastSelectedDistanceRate = distanceUnit?.rates[lastSelectedDistanceRateID] ?? {} + const lastSelectedDistanceRateID = lastSelectedDistanceRates?.[policy?.id ?? ''] ?? ''; + const lastSelectedDistanceRate = distanceUnit?.rates[lastSelectedDistanceRateID] ?? {}; if (ReportUtils.isPolicyExpenseChat(report) || ReportUtils.isPolicyExpenseChat(parentReport)) { if (lastSelectedDistanceRate.enabled && lastSelectedDistanceRateID) { - customUnitRateID = lastSelectedDistanceRateID + customUnitRateID = lastSelectedDistanceRateID; } else { customUnitRateID = getDefaultMileageRate(policy)?.customUnitRateID ?? ''; } diff --git a/src/libs/Permissions.ts b/src/libs/Permissions.ts index f2b34b7efa9b..e24d03ec62ff 100644 --- a/src/libs/Permissions.ts +++ b/src/libs/Permissions.ts @@ -4,7 +4,7 @@ import type {IOUType} from '@src/CONST'; import type Beta from '@src/types/onyx/Beta'; function canUseAllBetas(betas: OnyxEntry): boolean { - return true + return true; } function canUseChronos(betas: OnyxEntry): boolean { diff --git a/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx b/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx index c5f2212d30f2..4f54faf69aee 100644 --- a/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx +++ b/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx @@ -100,7 +100,7 @@ const IOURequestStepDistanceRateWithOnyx = withOnyx `${ONYXKEYS.COLLECTION.POLICY}${report?.policyID ?? '0'}`, - selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy, false) + selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy, false), }, })(IOURequestStepDistanceRate); From 7124d210436f5af17e49fbc6db9cc568b5234629 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Thu, 23 May 2024 10:56:48 +0700 Subject: [PATCH 03/13] address lint error --- src/libs/DistanceRequestUtils.ts | 7 ++++++- src/libs/Permissions.ts | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index fadaeaaeb06f..d00e4e8b8818 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -1,3 +1,4 @@ +import {isEmpty} from 'lodash'; import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; import Onyx from 'react-native-onyx'; import type {LocaleContextProps} from '@components/LocaleContextProvider'; @@ -45,7 +46,7 @@ const METERS_TO_MILES = 0.000621371; // There are approximately 0.000621371 mile * * @returns An array of mileage rates or an empty array if not found. */ -function getMileageRates(policy: OnyxEntry, includeDisableRate: boolean = true): Record { +function getMileageRates(policy: OnyxEntry | EmptyObject, includeDisableRate: boolean = true): Record { const mileageRates: Record = {}; if (!policy || !policy?.customUnits) { @@ -91,6 +92,10 @@ function getMileageRates(policy: OnyxEntry, includeDisableRate: boolean * @returns [unit] - The unit of measurement for the distance. */ function getDefaultMileageRate(policy: OnyxEntry | EmptyObject): MileageRate | null { + if (isEmpty(policy)) { + return null; + } + if (!policy?.customUnits) { return null; } diff --git a/src/libs/Permissions.ts b/src/libs/Permissions.ts index e24d03ec62ff..45551fe1cad9 100644 --- a/src/libs/Permissions.ts +++ b/src/libs/Permissions.ts @@ -4,7 +4,7 @@ import type {IOUType} from '@src/CONST'; import type Beta from '@src/types/onyx/Beta'; function canUseAllBetas(betas: OnyxEntry): boolean { - return true; + return !!betas?.includes(CONST.BETAS.ALL); } function canUseChronos(betas: OnyxEntry): boolean { From 01c92b36e8f33f128de26528049dd7dcb0869d25 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Thu, 23 May 2024 11:04:56 +0700 Subject: [PATCH 04/13] address lint error --- src/libs/DistanceRequestUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index d00e4e8b8818..07536a3f7fb7 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -46,7 +46,7 @@ const METERS_TO_MILES = 0.000621371; // There are approximately 0.000621371 mile * * @returns An array of mileage rates or an empty array if not found. */ -function getMileageRates(policy: OnyxEntry | EmptyObject, includeDisableRate: boolean = true): Record { +function getMileageRates(policy: OnyxEntry, includeDisableRate = true): Record { const mileageRates: Record = {}; if (!policy || !policy?.customUnits) { From 0bcee9de63c7c446bfe70b60fbc2db787784365f Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Wed, 29 May 2024 22:15:07 +0700 Subject: [PATCH 05/13] resolve typescript error --- src/libs/DistanceRequestUtils.ts | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index 07536a3f7fb7..282c399bc567 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -1,4 +1,3 @@ -import {isEmpty} from 'lodash'; import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; import Onyx from 'react-native-onyx'; import type {LocaleContextProps} from '@components/LocaleContextProvider'; @@ -9,6 +8,7 @@ import type {LastSelectedDistanceRates, Report} from '@src/types/onyx'; import type {Unit} from '@src/types/onyx/Policy'; import type Policy from '@src/types/onyx/Policy'; import type {EmptyObject} from '@src/types/utils/EmptyObject'; +import {isEmptyObject} from '@src/types/utils/EmptyObject'; import * as CurrencyUtils from './CurrencyUtils'; import * as PolicyUtils from './PolicyUtils'; import * as ReportUtils from './ReportUtils'; @@ -43,6 +43,7 @@ const METERS_TO_MILES = 0.000621371; // There are approximately 0.000621371 mile * Retrieves the mileage rates for given policy. * * @param policy - The policy from which to extract the mileage rates. + * @param includeDisableRate - Should include disable rate * * @returns An array of mileage rates or an empty array if not found. */ @@ -92,11 +93,7 @@ function getMileageRates(policy: OnyxEntry, includeDisableRate = true): * @returns [unit] - The unit of measurement for the distance. */ function getDefaultMileageRate(policy: OnyxEntry | EmptyObject): MileageRate | null { - if (isEmpty(policy)) { - return null; - } - - if (!policy?.customUnits) { + if (isEmptyObject(policy) || !policy?.customUnits) { return null; } @@ -273,12 +270,11 @@ function getCustomUnitRateID(reportID: string) { const parentReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${report?.parentReportID}`] ?? null; const policy = PolicyUtils.getPolicy(report?.policyID ?? parentReport?.policyID ?? ''); - let customUnitRateID: string = CONST.CUSTOM_UNITS.FAKE_P2P_ID; - - if (!policy?.customUnits) { + if (isEmptyObject(policy) || !policy?.customUnits) { return null; } + let customUnitRateID: string = CONST.CUSTOM_UNITS.FAKE_P2P_ID; const distanceUnit = Object.values(policy?.customUnits).find((unit) => unit.name === CONST.CUSTOM_UNITS.NAME_DISTANCE); const lastSelectedDistanceRateID = lastSelectedDistanceRates?.[policy?.id ?? ''] ?? ''; const lastSelectedDistanceRate = distanceUnit?.rates[lastSelectedDistanceRateID] ?? {}; From e9e1dd4d121a71ea9e79a59340eeb0b7cd60351e Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Wed, 29 May 2024 22:26:33 +0700 Subject: [PATCH 06/13] resolve typescript error --- src/libs/DistanceRequestUtils.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index 282c399bc567..685403b7d689 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -47,7 +47,7 @@ const METERS_TO_MILES = 0.000621371; // There are approximately 0.000621371 mile * * @returns An array of mileage rates or an empty array if not found. */ -function getMileageRates(policy: OnyxEntry, includeDisableRate = true): Record { +function getMileageRates(policy: OnyxEntry, includeDisableRate: boolean = true): Record { const mileageRates: Record = {}; if (!policy || !policy?.customUnits) { @@ -303,3 +303,4 @@ export default { }; export type {MileageRate}; + From 73011ad538a6d7852630735fda583f034a7549c4 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Wed, 29 May 2024 22:53:39 +0700 Subject: [PATCH 07/13] resolve typescript error --- src/components/MoneyRequestConfirmationList.tsx | 2 +- src/components/ReportActionItem/MoneyRequestView.tsx | 2 +- src/libs/DistanceRequestUtils.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 27a2fa6cdb55..37928075e255 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -1258,7 +1258,7 @@ export default withOnyx `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, - selector: DistanceRequestUtils.getMileageRates, + selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy), }, policy: { key: ({policyID}) => `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index d6e26d7d4346..a203f51cea7a 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -575,7 +575,7 @@ export default withOnyx `${ONYXKEYS.COLLECTION.POLICY}${report.policyID}`, - selector: DistanceRequestUtils.getMileageRates, + selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy), }, })( withOnyx({ diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index 685403b7d689..27372af00732 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -269,12 +269,12 @@ function getCustomUnitRateID(reportID: string) { const report = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${reportID}`] ?? null; const parentReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${report?.parentReportID}`] ?? null; const policy = PolicyUtils.getPolicy(report?.policyID ?? parentReport?.policyID ?? ''); + let customUnitRateID: string = CONST.CUSTOM_UNITS.FAKE_P2P_ID; if (isEmptyObject(policy) || !policy?.customUnits) { - return null; + return customUnitRateID; } - let customUnitRateID: string = CONST.CUSTOM_UNITS.FAKE_P2P_ID; const distanceUnit = Object.values(policy?.customUnits).find((unit) => unit.name === CONST.CUSTOM_UNITS.NAME_DISTANCE); const lastSelectedDistanceRateID = lastSelectedDistanceRates?.[policy?.id ?? ''] ?? ''; const lastSelectedDistanceRate = distanceUnit?.rates[lastSelectedDistanceRateID] ?? {}; From 643e2bd3b61f2fdf568e79d69cccd4e6cf5574cb Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Wed, 29 May 2024 23:06:06 +0700 Subject: [PATCH 08/13] resolve typescript error --- src/libs/DistanceRequestUtils.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index 27372af00732..f5c617d17058 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -47,7 +47,7 @@ const METERS_TO_MILES = 0.000621371; // There are approximately 0.000621371 mile * * @returns An array of mileage rates or an empty array if not found. */ -function getMileageRates(policy: OnyxEntry, includeDisableRate: boolean = true): Record { +function getMileageRates(policy: OnyxEntry, includeDisableRate = true): Record { const mileageRates: Record = {}; if (!policy || !policy?.customUnits) { @@ -303,4 +303,3 @@ export default { }; export type {MileageRate}; - From 6954f33c1df64f285fedc087f77a82ea1cc987c5 Mon Sep 17 00:00:00 2001 From: cretadn22 <168617111+cretadn22@users.noreply.github.com> Date: Thu, 30 May 2024 09:23:27 +0700 Subject: [PATCH 09/13] Update src/libs/DistanceRequestUtils.ts Co-authored-by: Kevin Brian Bader <56457735+ikevin127@users.noreply.github.com> --- src/libs/DistanceRequestUtils.ts | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index f5c617d17058..d7a6ea25f1c2 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -60,23 +60,17 @@ function getMileageRates(policy: OnyxEntry, includeDisableRate = true): } Object.entries(distanceUnit.rates).forEach(([rateID, rate]) => { - if (includeDisableRate) { - mileageRates[rateID] = { - rate: rate.rate, - currency: rate.currency, - unit: distanceUnit.attributes.unit, - name: rate.name, - customUnitRateID: rate.customUnitRateID, - }; - } else if (rate.enabled) { - mileageRates[rateID] = { - rate: rate.rate, - currency: rate.currency, - unit: distanceUnit.attributes.unit, - name: rate.name, - customUnitRateID: rate.customUnitRateID, - }; + if (!includeDisableRate && !rate.enabled) { + return; } + + mileageRates[rateID] = { + rate: rate.rate, + currency: rate.currency, + unit: distanceUnit.attributes.unit, + name: rate.name, + customUnitRateID: rate.customUnitRateID, + }; }); return mileageRates; From e5a15ddcdd1f3716745f09fed30b8b0c10d258a1 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Thu, 30 May 2024 09:35:01 +0700 Subject: [PATCH 10/13] resolve lint error --- src/libs/DistanceRequestUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index d7a6ea25f1c2..5b7f66312fe4 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -63,7 +63,7 @@ function getMileageRates(policy: OnyxEntry, includeDisableRate = true): if (!includeDisableRate && !rate.enabled) { return; } - + mileageRates[rateID] = { rate: rate.rate, currency: rate.currency, From e33038567ed3cfa4472d7f9c8c8e89dff69c2b31 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Fri, 31 May 2024 16:33:10 +0700 Subject: [PATCH 11/13] rename and update default param --- .../MoneyRequestConfirmationList.tsx | 2 +- .../ReportActionItem/MoneyRequestView.tsx | 2 +- src/libs/DistanceRequestUtils.ts | 19 +++++++------------ src/libs/actions/IOU.ts | 2 +- .../step/IOURequestStepDistanceRate.tsx | 2 +- 5 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 37928075e255..f854453b456c 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -1258,7 +1258,7 @@ export default withOnyx `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, - selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy), + selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy, true), }, policy: { key: ({policyID}) => `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index a203f51cea7a..f099c45648a9 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -575,7 +575,7 @@ export default withOnyx `${ONYXKEYS.COLLECTION.POLICY}${report.policyID}`, - selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy), + selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy, true), }, })( withOnyx({ diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index 5b7f66312fe4..0e6344adbf57 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -43,11 +43,11 @@ const METERS_TO_MILES = 0.000621371; // There are approximately 0.000621371 mile * Retrieves the mileage rates for given policy. * * @param policy - The policy from which to extract the mileage rates. - * @param includeDisableRate - Should include disable rate + * @param includeDisabledRates - Should include disable rate * * @returns An array of mileage rates or an empty array if not found. */ -function getMileageRates(policy: OnyxEntry, includeDisableRate = true): Record { +function getMileageRates(policy: OnyxEntry, includeDisabledRates = false): Record { const mileageRates: Record = {}; if (!policy || !policy?.customUnits) { @@ -60,7 +60,7 @@ function getMileageRates(policy: OnyxEntry, includeDisableRate = true): } Object.entries(distanceUnit.rates).forEach(([rateID, rate]) => { - if (!includeDisableRate && !rate.enabled) { + if (!includeDisabledRates && !rate.enabled) { return; } @@ -95,7 +95,7 @@ function getDefaultMileageRate(policy: OnyxEntry | EmptyObject): Mileage if (!distanceUnit?.rates) { return null; } - const mileageRates = getMileageRates(policy, false); + const mileageRates = getMileageRates(policy); const distanceRate = Object.values(mileageRates).find((rate) => rate.name === CONST.CUSTOM_UNITS.DEFAULT_RATE) ?? Object.values(mileageRates)[0]; @@ -265,15 +265,10 @@ function getCustomUnitRateID(reportID: string) { const policy = PolicyUtils.getPolicy(report?.policyID ?? parentReport?.policyID ?? ''); let customUnitRateID: string = CONST.CUSTOM_UNITS.FAKE_P2P_ID; - if (isEmptyObject(policy) || !policy?.customUnits) { - return customUnitRateID; - } - - const distanceUnit = Object.values(policy?.customUnits).find((unit) => unit.name === CONST.CUSTOM_UNITS.NAME_DISTANCE); - const lastSelectedDistanceRateID = lastSelectedDistanceRates?.[policy?.id ?? ''] ?? ''; - const lastSelectedDistanceRate = distanceUnit?.rates[lastSelectedDistanceRateID] ?? {}; - if (ReportUtils.isPolicyExpenseChat(report) || ReportUtils.isPolicyExpenseChat(parentReport)) { + const distanceUnit = Object.values(policy?.customUnits ?? {}).find((unit) => unit.name === CONST.CUSTOM_UNITS.NAME_DISTANCE); + const lastSelectedDistanceRateID = lastSelectedDistanceRates?.[policy?.id ?? ''] ?? ''; + const lastSelectedDistanceRate = distanceUnit?.rates[lastSelectedDistanceRateID] ?? {}; if (lastSelectedDistanceRate.enabled && lastSelectedDistanceRateID) { customUnitRateID = lastSelectedDistanceRateID; } else { diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 41e684a5c579..996314c56702 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -2351,7 +2351,7 @@ function calculateAmountForUpdatedWaypoint( let updatedMerchant = Localize.translateLocal('iou.fieldPending'); if (!isEmptyObject(transactionChanges?.routes)) { const customUnitRateID = TransactionUtils.getRateID(transaction) ?? ''; - const mileageRates = DistanceRequestUtils.getMileageRates(policy); + const mileageRates = DistanceRequestUtils.getMileageRates(policy, true); const policyCurrency = policy?.outputCurrency ?? PolicyUtils.getPersonalPolicy()?.outputCurrency ?? CONST.CURRENCY.USD; const mileageRate = TransactionUtils.isCustomUnitRateIDForP2P(transaction) ? DistanceRequestUtils.getRateForP2P(policyCurrency) diff --git a/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx b/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx index 4060871b6cfd..9c2687987bb9 100644 --- a/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx +++ b/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx @@ -119,7 +119,7 @@ const IOURequestStepDistanceRateWithOnyx = withOnyx `${ONYXKEYS.COLLECTION.POLICY}${report?.policyID ?? '0'}`, - selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy, false), + selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy), }, })(IOURequestStepDistanceRate); From 347d4bde015c51d2c3e17f97b0cba54cb10361b3 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Sat, 1 Jun 2024 00:56:23 +0700 Subject: [PATCH 12/13] Address comments --- src/components/MoneyRequestConfirmationList.tsx | 2 +- src/libs/DistanceRequestUtils.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index f854453b456c..37928075e255 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -1258,7 +1258,7 @@ export default withOnyx `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, - selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy, true), + selector: (policy: OnyxEntry) => DistanceRequestUtils.getMileageRates(policy), }, policy: { key: ({policyID}) => `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index 0e6344adbf57..f9d6ed20e0de 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -43,7 +43,7 @@ const METERS_TO_MILES = 0.000621371; // There are approximately 0.000621371 mile * Retrieves the mileage rates for given policy. * * @param policy - The policy from which to extract the mileage rates. - * @param includeDisabledRates - Should include disable rate + * @param includeDisabledRates - Whether disabled rates should be included. * * @returns An array of mileage rates or an empty array if not found. */ From 5255b0fbb016134a6ef4118d4566a19b67b19c13 Mon Sep 17 00:00:00 2001 From: cretadn22 Date: Sat, 1 Jun 2024 01:04:52 +0700 Subject: [PATCH 13/13] remove description --- src/libs/DistanceRequestUtils.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index f9d6ed20e0de..9f0fe1b1eb4f 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -39,14 +39,6 @@ Onyx.connect({ const METERS_TO_KM = 0.001; // 1 kilometer is 1000 meters const METERS_TO_MILES = 0.000621371; // There are approximately 0.000621371 miles in a meter -/** - * Retrieves the mileage rates for given policy. - * - * @param policy - The policy from which to extract the mileage rates. - * @param includeDisabledRates - Whether disabled rates should be included. - * - * @returns An array of mileage rates or an empty array if not found. - */ function getMileageRates(policy: OnyxEntry, includeDisabledRates = false): Record { const mileageRates: Record = {};