From e8d6574bd5aa0283270f028c581493351814e86d Mon Sep 17 00:00:00 2001 From: Maruf Sharifi Date: Sat, 18 Jul 2026 12:33:59 +0300 Subject: [PATCH] Thread localized formatter through per diem expenses --- src/libs/actions/IOU/Duplicate.ts | 1 + src/libs/actions/IOU/PerDiem.ts | 8 +++++++- .../request/step/confirmation/useExpenseSubmission.ts | 1 + tests/actions/IOU/PerDiemTest.ts | 10 +++++++++- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/IOU/Duplicate.ts b/src/libs/actions/IOU/Duplicate.ts index 16ec5d43afc5..46692a62454a 100644 --- a/src/libs/actions/IOU/Duplicate.ts +++ b/src/libs/actions/IOU/Duplicate.ts @@ -715,6 +715,7 @@ function createExpenseByType({ hasViolations: false, customUnitPolicyID, isTrackIntentUser, + formatPhoneNumber, }; return submitPerDiemExpense(perDiemParams); } diff --git a/src/libs/actions/IOU/PerDiem.ts b/src/libs/actions/IOU/PerDiem.ts index a9de1d9c5740..e8bc84d7a693 100644 --- a/src/libs/actions/IOU/PerDiem.ts +++ b/src/libs/actions/IOU/PerDiem.ts @@ -1,3 +1,5 @@ +import type {LocaleContextProps} from '@components/LocaleContextProvider'; + import * as API from '@libs/API'; import type {CreatePerDiemRequestParams} from '@libs/API/parameters'; import {WRITE_COMMANDS} from '@libs/API/types'; @@ -6,7 +8,6 @@ import DateUtils from '@libs/DateUtils'; import {deferOrExecuteWrite} from '@libs/deferredLayoutWrite'; import {getMicroSecondOnyxErrorWithTranslationKey} from '@libs/ErrorUtils'; import {updateIOUOwnerAndTotal} from '@libs/IOUUtils'; -import {formatPhoneNumber} from '@libs/LocalePhoneNumber'; import {validateAmount} from '@libs/MoneyRequestUtils'; import Navigation from '@libs/Navigation/Navigation'; import TransitionTracker from '@libs/Navigation/TransitionTracker'; @@ -240,6 +241,7 @@ type PerDiemExpenseInformation = { shouldDeferAutoSubmit?: boolean; optimisticChatReportID?: string; optimisticTransactionID?: string; + formatPhoneNumber: LocaleContextProps['formatPhoneNumber']; // TODO: delegateAccountID will be made required in PR 13 when all callers pass the value (https://github.com/Expensify/App/issues/66425) delegateAccountID?: number | undefined; isTrackIntentUser: boolean | undefined; @@ -264,6 +266,7 @@ type PerDiemExpenseInformationParams = { personalDetails: OnyxEntry; optimisticChatReportID?: string; optimisticTransactionID?: string; + formatPhoneNumber: LocaleContextProps['formatPhoneNumber']; // TODO: delegateAccountID will be made required in PR 13 when all callers pass the value (https://github.com/Expensify/App/issues/66425) delegateAccountID?: number | undefined; isTrackIntentUser: boolean | undefined; @@ -322,6 +325,7 @@ function getPerDiemExpenseInformation(perDiemExpenseInformation: PerDiemExpenseI personalDetails, optimisticChatReportID, optimisticTransactionID: uiProvidedOptimisticTransactionID, + formatPhoneNumber, delegateAccountID, isTrackIntentUser, } = perDiemExpenseInformation; @@ -931,6 +935,7 @@ function submitPerDiemExpense(submitPerDiemExpenseInformation: PerDiemExpenseInf shouldDeferAutoSubmit, optimisticChatReportID, optimisticTransactionID, + formatPhoneNumber, delegateAccountID, isTrackIntentUser, } = submitPerDiemExpenseInformation; @@ -984,6 +989,7 @@ function submitPerDiemExpense(submitPerDiemExpenseInformation: PerDiemExpenseInf personalDetails, optimisticChatReportID, optimisticTransactionID, + formatPhoneNumber, delegateAccountID, isTrackIntentUser, }); diff --git a/src/pages/iou/request/step/confirmation/useExpenseSubmission.ts b/src/pages/iou/request/step/confirmation/useExpenseSubmission.ts index 732a40a2dd7a..f83f60587543 100644 --- a/src/pages/iou/request/step/confirmation/useExpenseSubmission.ts +++ b/src/pages/iou/request/step/confirmation/useExpenseSubmission.ts @@ -638,6 +638,7 @@ function useExpenseSubmission(params: UseExpenseSubmissionParams) { betas, personalDetails, optimisticChatReportID, + formatPhoneNumber, isTrackIntentUser, }); const targetReportID = backToReport ?? activeReportID; diff --git a/tests/actions/IOU/PerDiemTest.ts b/tests/actions/IOU/PerDiemTest.ts index 7a827cb6d056..a48b862cf412 100644 --- a/tests/actions/IOU/PerDiemTest.ts +++ b/tests/actions/IOU/PerDiemTest.ts @@ -20,7 +20,7 @@ import createRandomPolicyCategories from '../../utils/collections/policyCategory import createRandomPolicyTags from '../../utils/collections/policyTags'; import createRandomTransaction from '../../utils/collections/transaction'; import getOnyxValue from '../../utils/getOnyxValue'; -import {getGlobalFetchMock} from '../../utils/TestHelper'; +import {formatPhoneNumber, getGlobalFetchMock} from '../../utils/TestHelper'; import waitForBatchedUpdates from '../../utils/waitForBatchedUpdates'; jest.mock('@src/libs/Navigation/Navigation', () => ({ @@ -326,6 +326,7 @@ describe('PerDiem', () => { quickAction: undefined, betas: [CONST.BETAS.ALL], personalDetails: {[mockParticipantParams.payeeAccountID]: {accountID: mockParticipantParams.payeeAccountID, login: 'payee@example.com'}}, + formatPhoneNumber, isTrackIntentUser: false, }); @@ -417,6 +418,7 @@ describe('PerDiem', () => { quickAction: undefined, betas: [CONST.BETAS.ALL], personalDetails: {[mockParticipant.accountID]: {accountID: mockParticipant.accountID, login: 'existing@example.com'}}, + formatPhoneNumber, isTrackIntentUser: false, }); @@ -552,6 +554,7 @@ describe('PerDiem', () => { quickAction: undefined, betas: [CONST.BETAS.ALL], personalDetails: {[mockParticipant.accountID]: {accountID: mockParticipant.accountID, login: 'existing@example.com'}}, + formatPhoneNumber, isTrackIntentUser: false, }); @@ -641,6 +644,7 @@ describe('PerDiem', () => { quickAction: undefined, betas: [CONST.BETAS.ALL], personalDetails: {[mockParticipant.accountID]: {accountID: mockParticipant.accountID, login: 'existing@example.com'}}, + formatPhoneNumber, isTrackIntentUser: false, }); @@ -717,6 +721,7 @@ describe('PerDiem', () => { quickAction: undefined, betas: [CONST.BETAS.ALL], personalDetails: {[RORY_ACCOUNT_ID]: {accountID: RORY_ACCOUNT_ID, login: RORY_EMAIL}}, + formatPhoneNumber, isTrackIntentUser: false, }); @@ -786,6 +791,7 @@ describe('PerDiem', () => { betas: [CONST.BETAS.ALL], personalDetails: {[RORY_ACCOUNT_ID]: {accountID: RORY_ACCOUNT_ID, login: RORY_EMAIL}}, optimisticTransactionID, + formatPhoneNumber, isTrackIntentUser: false, }); @@ -860,6 +866,7 @@ describe('PerDiem', () => { quickAction: undefined, betas: [CONST.BETAS.ALL], personalDetails: personalDetailsList, + formatPhoneNumber, isTrackIntentUser: false, }); @@ -925,6 +932,7 @@ describe('PerDiem', () => { quickAction: undefined, betas: [CONST.BETAS.ALL], personalDetails: personalDetailsList, + formatPhoneNumber, isTrackIntentUser: false, });