From d89d8cc982cd6358ed34efb922c088452046be0d Mon Sep 17 00:00:00 2001 From: mkzie2 Date: Mon, 24 Feb 2025 11:09:35 +0700 Subject: [PATCH 1/5] refactor getTrackExpenseInformation function --- src/libs/actions/IOU.ts | 112 +++++++++++++++++++++++----------------- 1 file changed, 65 insertions(+), 47 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 6f4596b0e597..7b0488e881fb 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -480,6 +480,34 @@ type CreateTrackExpenseParams = { transactionParams: TrackExpenseTransactionParams; }; +type GetTrackExpenseInformationTransactionParams = { + comment: string; + amount: number; + currency: string; + created: string; + merchant: string; + receipt: OnyxEntry; + category?: string; + tag?: string; + taxCode?: string; + taxAmount?: number; + billable?: boolean; + linkedTrackedExpenseReportAction?: OnyxTypes.ReportAction; +}; + +type GetTrackExpenseInformationParams = { + parentChatReport: OnyxEntry; + moneyRequestReportID?: string; + existingTransactionID?: string; + participantParams: { + payeeEmail?: string; + payeeAccountID?: number; + participant: Participant; + }; + policyParams: RequestMoneyPolicyParams; + transactionParams: GetTrackExpenseInformationTransactionParams; +}; + let allPersonalDetails: OnyxTypes.PersonalDetailsList = {}; Onyx.connect({ key: ONYXKEYS.PERSONAL_DETAILS_LIST, @@ -3076,29 +3104,12 @@ function getPerDiemExpenseInformation(perDiemExpenseInformation: PerDiemExpenseI * Gathers all the data needed to make an expense. It attempts to find existing reports, iouReports, and receipts. If it doesn't find them, then * it creates optimistic versions of them and uses those instead */ -function getTrackExpenseInformation( - parentChatReport: OnyxEntry, - participant: Participant, - comment: string, - amount: number, - currency: string, - created: string, - merchant: string, - receipt: OnyxEntry, - category: string | undefined, - tag: string | undefined, - taxCode: string | undefined, - taxAmount: number | undefined, - billable: boolean | undefined, - policy: OnyxEntry | undefined, - policyTagList: OnyxEntry | undefined, - policyCategories: OnyxEntry | undefined, - payeeEmail = currentUserEmail, - payeeAccountID = userAccountID, - moneyRequestReportID = '', - linkedTrackedExpenseReportAction?: OnyxTypes.ReportAction, - existingTransactionID?: string, -): TrackExpenseInformation | null { +function getTrackExpenseInformation(params: GetTrackExpenseInformationParams): TrackExpenseInformation | null { + const {parentChatReport, moneyRequestReportID = '', existingTransactionID, participantParams, policyParams, transactionParams} = params; + const {payeeAccountID = userAccountID, payeeEmail = currentUserEmail, participant} = participantParams; + const {policy, policyCategories, policyTagList} = policyParams; + const {comment, amount, currency, created, merchant, receipt, category, tag, taxCode, taxAmount, billable, linkedTrackedExpenseReportAction} = transactionParams; + const optimisticData: OnyxUpdate[] = []; const successData: OnyxUpdate[] = []; const failureData: OnyxUpdate[] = []; @@ -4822,31 +4833,38 @@ function trackExpense(params: CreateTrackExpenseParams) { actionableWhisperReportActionIDParam, onyxData, } = - getTrackExpenseInformation( - currentChatReport, - participant, - comment, - amount, - currency, - created, - merchant, - trackedReceipt, - category, - tag, - taxCode, - taxAmount, - billable, - policy, - policyTagList, - policyCategories, - payeeEmail, - payeeAccountID, + getTrackExpenseInformation({ + parentChatReport: currentChatReport, moneyRequestReportID, - linkedTrackedExpenseReportAction, - isMovingTransactionFromTrackExpense && linkedTrackedExpenseReportAction && isMoneyRequestAction(linkedTrackedExpenseReportAction) - ? getOriginalMessage(linkedTrackedExpenseReportAction)?.IOUTransactionID - : undefined, - ) ?? {}; + existingTransactionID: + isMovingTransactionFromTrackExpense && linkedTrackedExpenseReportAction && isMoneyRequestAction(linkedTrackedExpenseReportAction) + ? getOriginalMessage(linkedTrackedExpenseReportAction)?.IOUTransactionID + : undefined, + participantParams: { + participant, + payeeAccountID, + payeeEmail, + }, + transactionParams: { + comment, + amount, + currency, + created, + merchant, + receipt: trackedReceipt, + category, + tag, + taxCode, + taxAmount, + billable, + linkedTrackedExpenseReportAction, + }, + policyParams: { + policy, + policyCategories, + policyTagList, + }, + }) ?? {}; const activeReportID = isMoneyRequestReport ? report.reportID : chatReport?.reportID; const recentServerValidatedWaypoints = getRecentWaypoints().filter((item) => !item.pendingAction); From ea50d6caaec2801aed4bac37dfb4427ccf5dbf3d Mon Sep 17 00:00:00 2001 From: mkzie2 Date: Tue, 25 Feb 2025 12:13:05 +0700 Subject: [PATCH 2/5] reuse existing type --- src/libs/actions/IOU.ts | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 7b0488e881fb..100f19eaa732 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -480,32 +480,13 @@ type CreateTrackExpenseParams = { transactionParams: TrackExpenseTransactionParams; }; -type GetTrackExpenseInformationTransactionParams = { - comment: string; - amount: number; - currency: string; - created: string; - merchant: string; - receipt: OnyxEntry; - category?: string; - tag?: string; - taxCode?: string; - taxAmount?: number; - billable?: boolean; - linkedTrackedExpenseReportAction?: OnyxTypes.ReportAction; -}; - type GetTrackExpenseInformationParams = { parentChatReport: OnyxEntry; moneyRequestReportID?: string; existingTransactionID?: string; - participantParams: { - payeeEmail?: string; - payeeAccountID?: number; - participant: Participant; - }; + participantParams: RequestMoneyParticipantParams; policyParams: RequestMoneyPolicyParams; - transactionParams: GetTrackExpenseInformationTransactionParams; + transactionParams: RequestMoneyTransactionParams; }; let allPersonalDetails: OnyxTypes.PersonalDetailsList = {}; @@ -3108,7 +3089,7 @@ function getTrackExpenseInformation(params: GetTrackExpenseInformationParams): T const {parentChatReport, moneyRequestReportID = '', existingTransactionID, participantParams, policyParams, transactionParams} = params; const {payeeAccountID = userAccountID, payeeEmail = currentUserEmail, participant} = participantParams; const {policy, policyCategories, policyTagList} = policyParams; - const {comment, amount, currency, created, merchant, receipt, category, tag, taxCode, taxAmount, billable, linkedTrackedExpenseReportAction} = transactionParams; + const {comment = '', amount, currency, created, merchant, receipt, category, tag, taxCode, taxAmount, billable, linkedTrackedExpenseReportAction} = transactionParams; const optimisticData: OnyxUpdate[] = []; const successData: OnyxUpdate[] = []; From 817bf52ea7ee9b837d0022ebe2d865287cf66c7d Mon Sep 17 00:00:00 2001 From: mkzie2 Date: Tue, 25 Feb 2025 16:30:21 +0700 Subject: [PATCH 3/5] update type --- src/libs/actions/IOU.ts | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 100f19eaa732..3c702a57c0b5 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -480,13 +480,34 @@ type CreateTrackExpenseParams = { transactionParams: TrackExpenseTransactionParams; }; +type GetTrackExpenseInformationTransactionParams = { + comment: string; + amount: number; + currency: string; + created: string; + merchant: string; + receipt: OnyxEntry; + category?: string; + tag?: string; + taxCode?: string; + taxAmount?: number; + billable?: boolean; + linkedTrackedExpenseReportAction?: OnyxTypes.ReportAction; +}; + +type GetTrackExpenseInformationParticipantParams = { + payeeEmail?: string; + payeeAccountID?: number; + participant: Participant; +}; + type GetTrackExpenseInformationParams = { parentChatReport: OnyxEntry; moneyRequestReportID?: string; existingTransactionID?: string; - participantParams: RequestMoneyParticipantParams; + participantParams: GetTrackExpenseInformationParticipantParams; policyParams: RequestMoneyPolicyParams; - transactionParams: RequestMoneyTransactionParams; + transactionParams: GetTrackExpenseInformationTransactionParams; }; let allPersonalDetails: OnyxTypes.PersonalDetailsList = {}; @@ -3089,7 +3110,7 @@ function getTrackExpenseInformation(params: GetTrackExpenseInformationParams): T const {parentChatReport, moneyRequestReportID = '', existingTransactionID, participantParams, policyParams, transactionParams} = params; const {payeeAccountID = userAccountID, payeeEmail = currentUserEmail, participant} = participantParams; const {policy, policyCategories, policyTagList} = policyParams; - const {comment = '', amount, currency, created, merchant, receipt, category, tag, taxCode, taxAmount, billable, linkedTrackedExpenseReportAction} = transactionParams; + const {comment, amount, currency, created, merchant, receipt, category, tag, taxCode, taxAmount, billable, linkedTrackedExpenseReportAction} = transactionParams; const optimisticData: OnyxUpdate[] = []; const successData: OnyxUpdate[] = []; From 23ac11f07d0dadd3a3d4e0d2c8d2b49b20a7e93c Mon Sep 17 00:00:00 2001 From: mkzie2 Date: Tue, 25 Feb 2025 16:42:34 +0700 Subject: [PATCH 4/5] add new type for policy params --- src/libs/actions/IOU.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 3c702a57c0b5..6982ab7e3766 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -501,12 +501,18 @@ type GetTrackExpenseInformationParticipantParams = { participant: Participant; }; +type GetTrackExpenseInformationPolicyParams = { + policy?: OnyxEntry; + policyTagList?: OnyxEntry; + policyCategories?: OnyxEntry; +}; + type GetTrackExpenseInformationParams = { parentChatReport: OnyxEntry; moneyRequestReportID?: string; existingTransactionID?: string; participantParams: GetTrackExpenseInformationParticipantParams; - policyParams: RequestMoneyPolicyParams; + policyParams: GetTrackExpenseInformationPolicyParams; transactionParams: GetTrackExpenseInformationTransactionParams; }; From 00b184fe0509350cab68bb691ff45060a7a79825 Mon Sep 17 00:00:00 2001 From: mkzie2 Date: Wed, 26 Feb 2025 17:46:45 +0700 Subject: [PATCH 5/5] update policy param type name --- src/libs/actions/IOU.ts | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 8d68d84274c2..a8020f5c186b 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -344,7 +344,7 @@ type PerDiemExpenseTransactionParams = { billable?: boolean; }; -type RequestMoneyPolicyParams = { +type BasePolicyParams = { policy?: OnyxEntry; policyTagList?: OnyxEntry; policyCategories?: OnyxEntry; @@ -359,7 +359,7 @@ type RequestMoneyParticipantParams = { type PerDiemExpenseInformation = { report: OnyxEntry; participantParams: RequestMoneyParticipantParams; - policyParams?: RequestMoneyPolicyParams; + policyParams?: BasePolicyParams; transactionParams: PerDiemExpenseTransactionParams; }; @@ -367,14 +367,14 @@ type PerDiemExpenseInformationParams = { parentChatReport: OnyxEntry; transactionParams: PerDiemExpenseTransactionParams; participantParams: RequestMoneyParticipantParams; - policyParams?: RequestMoneyPolicyParams; + policyParams?: BasePolicyParams; moneyRequestReportID?: string; }; type RequestMoneyInformation = { report: OnyxEntry; participantParams: RequestMoneyParticipantParams; - policyParams?: RequestMoneyPolicyParams; + policyParams?: BasePolicyParams; gpsPoints?: GPSPoint; action?: IOUAction; reimbursible?: boolean; @@ -385,7 +385,7 @@ type MoneyRequestInformationParams = { parentChatReport: OnyxEntry; transactionParams: RequestMoneyTransactionParams; participantParams: RequestMoneyParticipantParams; - policyParams?: RequestMoneyPolicyParams; + policyParams?: BasePolicyParams; moneyRequestReportID?: string; existingTransactionID?: string; existingTransaction?: OnyxEntry; @@ -422,7 +422,7 @@ type BuildOnyxDataForMoneyRequestParams = { shouldCreateNewMoneyRequestReport: boolean; isOneOnOneSplit?: boolean; existingTransactionThreadReportID?: string; - policyParams?: RequestMoneyPolicyParams; + policyParams?: BasePolicyParams; optimisticParams: MoneyRequestOptimisticParams; }; @@ -449,7 +449,7 @@ type CreateDistanceRequestInformation = { iouType?: ValueOf; existingTransaction?: OnyxEntry; transactionParams: DistanceRequestTransactionParams; - policyParams?: RequestMoneyPolicyParams; + policyParams?: BasePolicyParams; }; type TrackExpenseTransactionParams = { @@ -477,7 +477,7 @@ type CreateTrackExpenseParams = { isDraftPolicy: boolean; action?: IOUAction; participantParams: RequestMoneyParticipantParams; - policyParams?: RequestMoneyPolicyParams; + policyParams?: BasePolicyParams; transactionParams: TrackExpenseTransactionParams; }; @@ -502,18 +502,12 @@ type GetTrackExpenseInformationParticipantParams = { participant: Participant; }; -type GetTrackExpenseInformationPolicyParams = { - policy?: OnyxEntry; - policyTagList?: OnyxEntry; - policyCategories?: OnyxEntry; -}; - type GetTrackExpenseInformationParams = { parentChatReport: OnyxEntry; moneyRequestReportID?: string; existingTransactionID?: string; participantParams: GetTrackExpenseInformationParticipantParams; - policyParams: GetTrackExpenseInformationPolicyParams; + policyParams: BasePolicyParams; transactionParams: GetTrackExpenseInformationTransactionParams; };