diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 6f4596b0e597..5dea66050c40 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -1858,23 +1858,31 @@ function buildOnyxDataForInvoice( return [optimisticData, successData, failureData]; } +type BuildOnyxDataForTrackExpenseParams = { + chat: {report: OnyxInputValue; previewAction: OnyxInputValue}; + iou: {report: OnyxInputValue; createdAction: OptimisticCreatedReportAction; action: OptimisticIOUReportAction}; + transactionParams: {transaction: OnyxTypes.Transaction; threadReport: OptimisticChatReport | null; threadCreatedReportAction: OptimisticCreatedReportAction | null}; + policyParams: {policy?: OnyxInputValue; tagList?: OnyxInputValue; categories?: OnyxInputValue}; + shouldCreateNewMoneyRequestReport: boolean; + existingTransactionThreadReportID?: string; + actionableTrackExpenseWhisper?: OnyxInputValue; +}; + /** Builds the Onyx data for track expense */ -function buildOnyxDataForTrackExpense( - chatReport: OnyxInputValue, - iouReport: OnyxInputValue, - transaction: OnyxTypes.Transaction, - iouCreatedAction: OptimisticCreatedReportAction, - iouAction: OptimisticIOUReportAction, - reportPreviewAction: OnyxInputValue, - transactionThreadReport: OptimisticChatReport | null, - transactionThreadCreatedReportAction: OptimisticCreatedReportAction | null, - shouldCreateNewMoneyRequestReport: boolean, - policy?: OnyxInputValue, - policyTagList?: OnyxInputValue, - policyCategories?: OnyxInputValue, - existingTransactionThreadReportID?: string, - actionableTrackExpenseWhisper?: OnyxInputValue, -): [OnyxUpdate[], OnyxUpdate[], OnyxUpdate[]] { +function buildOnyxDataForTrackExpense({ + chat, + iou, + transactionParams, + policyParams = {}, + shouldCreateNewMoneyRequestReport, + existingTransactionThreadReportID, + actionableTrackExpenseWhisper, +}: BuildOnyxDataForTrackExpenseParams): [OnyxUpdate[], OnyxUpdate[], OnyxUpdate[]] { + const {report: chatReport, previewAction: reportPreviewAction} = chat; + const {report: iouReport, createdAction: iouCreatedAction, action: iouAction} = iou; + const {transaction, threadReport: transactionThreadReport, threadCreatedReportAction: transactionThreadCreatedReportAction} = transactionParams; + const {policy, tagList: policyTagList, categories: policyCategories} = policyParams; + const isScanRequest = isScanRequestTransactionUtils(transaction); const isDistanceRequest = isDistanceRequestTransactionUtils(transaction); const clearedPendingFields = Object.fromEntries(Object.keys(transaction.pendingFields ?? {}).map((key) => [key, null])); @@ -3256,22 +3264,18 @@ function getTrackExpenseInformation( } // STEP 5: Build Onyx Data - const trackExpenseOnyxData = buildOnyxDataForTrackExpense( - chatReport, - iouReport, - optimisticTransaction, - optimisticCreatedActionForIOUReport, - iouAction, - reportPreviewAction, - optimisticTransactionThread ?? {}, - optimisticCreatedActionForTransactionThread, + const trackExpenseOnyxData = buildOnyxDataForTrackExpense({ + chat: {report: chatReport, previewAction: reportPreviewAction}, + iou: {report: iouReport, action: iouAction, createdAction: optimisticCreatedActionForIOUReport}, + transactionParams: { + transaction: optimisticTransaction, + threadCreatedReportAction: optimisticCreatedActionForTransactionThread, + threadReport: optimisticTransactionThread ?? {}, + }, + policyParams: {policy, tagList: policyTagList, categories: policyCategories}, shouldCreateNewMoneyRequestReport, - policy, - policyTagList, - policyCategories, - undefined, actionableTrackExpenseWhisper, - ); + }); return { createdWorkspaceParams,