From 8f669b8604b9aae5425cbd2a0c132830e29f9c80 Mon Sep 17 00:00:00 2001 From: Sachin Chavda Date: Fri, 8 Nov 2024 02:48:01 +0530 Subject: [PATCH 01/10] Refactor IOU.categorizeTrackedExpense function --- src/libs/actions/IOU.ts | 104 +++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 56 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 7ce9b9dfb2722..3555e67c7109e 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -109,7 +109,32 @@ type TrackExpenseInformation = { actionableWhisperReportActionIDParam?: string; onyxData: OnyxData; }; - +type CategorizeTrackedExpenseInformation = { + policyID: string; + transactionID: string; + moneyRequestPreviewReportActionID: string; + moneyRequestReportID: string; + moneyRequestCreatedReportActionID: string; + actionableWhisperReportActionID: string; + linkedTrackedExpenseReportAction: OnyxTypes.ReportAction; + linkedTrackedExpenseReportID: string; + transactionThreadReportID: string; + reportPreviewReportActionID: string; + onyxData: OnyxData | undefined; +}; +type categorizeTrackedExpenseTransactionParams = { + amount: number; + currency: string; + comment: string; + merchant: string; + created: string; + taxCode: string; + taxAmount: number; + category?: string; + tag?: string; + billable?: boolean; + receipt?: Receipt; +}; type SendInvoiceInformation = { senderWorkspaceID: string; receiver: Partial; @@ -3398,30 +3423,12 @@ function convertTrackedExpenseToRequest( } function categorizeTrackedExpense( - policyID: string, - transactionID: string, - moneyRequestPreviewReportActionID: string, - moneyRequestReportID: string, - moneyRequestCreatedReportActionID: string, - actionableWhisperReportActionID: string, - linkedTrackedExpenseReportAction: OnyxTypes.ReportAction, - linkedTrackedExpenseReportID: string, - transactionThreadReportID: string, - reportPreviewReportActionID: string, - onyxData: OnyxData | undefined, - amount: number, - currency: string, - comment: string, - merchant: string, - created: string, - category?: string, - tag?: string, - taxCode = '', - taxAmount = 0, - billable?: boolean, - receipt?: Receipt, + trackedExpenseInformation: CategorizeTrackedExpenseInformation, + transactionParams: categorizeTrackedExpenseTransactionParams, createdWorkspaceParams?: CreateWorkspaceParams, ) { + const {transactionID, moneyRequestReportID, actionableWhisperReportActionID, linkedTrackedExpenseReportAction, linkedTrackedExpenseReportID, transactionThreadReportID, onyxData} = + trackedExpenseInformation; const {optimisticData, successData, failureData} = onyxData ?? {}; const { @@ -3442,27 +3449,10 @@ function categorizeTrackedExpense( optimisticData?.push(...moveTransactionOptimisticData); successData?.push(...moveTransactionSuccessData); failureData?.push(...moveTransactionFailureData); - const parameters = { - policyID, - transactionID, - moneyRequestPreviewReportActionID, - moneyRequestReportID, - moneyRequestCreatedReportActionID, - actionableWhisperReportActionID, + ...trackedExpenseInformation, + ...transactionParams, modifiedExpenseReportActionID, - reportPreviewReportActionID, - amount, - currency, - comment, - merchant, - category, - tag, - taxCode, - taxAmount, - billable, - created, - receipt, policyExpenseChatReportID: createdWorkspaceParams?.expenseChatReportID, policyExpenseCreatedReportActionID: createdWorkspaceParams?.expenseCreatedReportActionID, adminsChatReportID: createdWorkspaceParams?.adminsChatReportID, @@ -3847,31 +3837,33 @@ function trackExpense( if (!linkedTrackedExpenseReportAction || !actionableWhisperReportActionID || !linkedTrackedExpenseReportID) { return; } - categorizeTrackedExpense( - chatReport?.policyID ?? '-1', - transaction?.transactionID ?? '-1', - iouAction?.reportActionID ?? '-1', - iouReport?.reportID ?? '-1', - createdIOUReportActionID ?? '-1', - actionableWhisperReportActionID, + const trackedExpenseInformation = { + policyID: chatReport?.policyID ?? '-1', + transactionID: transaction?.transactionID ?? '-1', + moneyRequestPreviewReportActionID: iouAction?.reportActionID ?? '-1', + moneyRequestReportID: iouReport?.reportID ?? '-1', + moneyRequestCreatedReportActionID: createdIOUReportActionID ?? '-1', + actionableWhisperReportActionID: actionableWhisperReportActionID, linkedTrackedExpenseReportAction, linkedTrackedExpenseReportID, - transactionThreadReportID ?? '-1', - reportPreviewAction?.reportActionID ?? '-1', + transactionThreadReportID: transactionThreadReportID ?? '-1', + reportPreviewReportActionID: reportPreviewAction?.reportActionID ?? '-1', onyxData, + } as CategorizeTrackedExpenseInformation; + const transactionParams = { amount, currency, comment, merchant, created, + taxCode: taxCode ?? '', + taxAmount: taxAmount ?? 0, category, tag, - taxCode, - taxAmount, billable, - trackedReceipt, - createdWorkspaceParams, - ); + receipt: trackedReceipt, + } as categorizeTrackedExpenseTransactionParams; + categorizeTrackedExpense(trackedExpenseInformation, transactionParams, createdWorkspaceParams); break; } case CONST.IOU.ACTION.SHARE: { From 3fbe21c685b1651c43a3403d194aae88114a26b3 Mon Sep 17 00:00:00 2001 From: Sachin Chavda Date: Fri, 8 Nov 2024 03:00:08 +0530 Subject: [PATCH 02/10] lint fix --- src/libs/actions/IOU.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 3555e67c7109e..0a3b240bded0f 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -122,7 +122,7 @@ type CategorizeTrackedExpenseInformation = { reportPreviewReportActionID: string; onyxData: OnyxData | undefined; }; -type categorizeTrackedExpenseTransactionParams = { +type CategorizeTrackedExpenseTransactionParams = { amount: number; currency: string; comment: string; @@ -3424,7 +3424,7 @@ function convertTrackedExpenseToRequest( function categorizeTrackedExpense( trackedExpenseInformation: CategorizeTrackedExpenseInformation, - transactionParams: categorizeTrackedExpenseTransactionParams, + transactionParams: CategorizeTrackedExpenseTransactionParams, createdWorkspaceParams?: CreateWorkspaceParams, ) { const {transactionID, moneyRequestReportID, actionableWhisperReportActionID, linkedTrackedExpenseReportAction, linkedTrackedExpenseReportID, transactionThreadReportID, onyxData} = @@ -3862,7 +3862,7 @@ function trackExpense( tag, billable, receipt: trackedReceipt, - } as categorizeTrackedExpenseTransactionParams; + } as CategorizeTrackedExpenseTransactionParams; categorizeTrackedExpense(trackedExpenseInformation, transactionParams, createdWorkspaceParams); break; } From 23e840fb37d8de04cdd41445f82e0dc380dc6cbb Mon Sep 17 00:00:00 2001 From: Sachin Chavda Date: Fri, 8 Nov 2024 03:09:46 +0530 Subject: [PATCH 03/10] lint 2 --- src/libs/actions/IOU.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 0a3b240bded0f..f4a9ca1a757f4 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -3856,8 +3856,8 @@ function trackExpense( comment, merchant, created, - taxCode: taxCode ?? '', - taxAmount: taxAmount ?? 0, + taxCode, + taxAmount, category, tag, billable, From 0648dbf88965466d10c8a7a211d4536b94fdcbbf Mon Sep 17 00:00:00 2001 From: Sachin Chavda Date: Fri, 8 Nov 2024 03:14:56 +0530 Subject: [PATCH 04/10] lint 3 --- src/libs/actions/IOU.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index f4a9ca1a757f4..8693a5ba51200 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -3782,7 +3782,7 @@ function trackExpense( const isMovingTransactionFromTrackExpense = IOUUtils.isMovingTransactionFromTrackExpense(action); // Pass an open receipt so the distance expense will show a map with the route optimistically - const trackedReceipt = validWaypoints ? {source: ReceiptGeneric as ReceiptSource, state: CONST.IOU.RECEIPT_STATE.OPEN} : receipt; + const receipt = validWaypoints ? {source: ReceiptGeneric as ReceiptSource, state: CONST.IOU.RECEIPT_STATE.OPEN} : receipt; const { createdWorkspaceParams, @@ -3806,7 +3806,7 @@ function trackExpense( currency, created, merchant, - trackedReceipt, + receipt, category, tag, taxCode, @@ -3861,7 +3861,7 @@ function trackExpense( category, tag, billable, - receipt: trackedReceipt, + receipt, } as CategorizeTrackedExpenseTransactionParams; categorizeTrackedExpense(trackedExpenseInformation, transactionParams, createdWorkspaceParams); break; From 80ac36efe513258187ffaf350bf90c7f0ca7b479 Mon Sep 17 00:00:00 2001 From: Sachin Chavda Date: Fri, 8 Nov 2024 03:22:23 +0530 Subject: [PATCH 05/10] lint 4 --- src/libs/actions/IOU.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 8693a5ba51200..932e333eb4f68 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -3782,7 +3782,7 @@ function trackExpense( const isMovingTransactionFromTrackExpense = IOUUtils.isMovingTransactionFromTrackExpense(action); // Pass an open receipt so the distance expense will show a map with the route optimistically - const receipt = validWaypoints ? {source: ReceiptGeneric as ReceiptSource, state: CONST.IOU.RECEIPT_STATE.OPEN} : receipt; + const trackedReceipt = validWaypoints ? {source: ReceiptGeneric as ReceiptSource, state: CONST.IOU.RECEIPT_STATE.OPEN} : receipt; const { createdWorkspaceParams, @@ -3806,7 +3806,7 @@ function trackExpense( currency, created, merchant, - receipt, + trackedReceipt, category, tag, taxCode, @@ -3850,6 +3850,7 @@ function trackExpense( reportPreviewReportActionID: reportPreviewAction?.reportActionID ?? '-1', onyxData, } as CategorizeTrackedExpenseInformation; + // eslint-disable-next-line object-shorthand const transactionParams = { amount, currency, @@ -3861,7 +3862,7 @@ function trackExpense( category, tag, billable, - receipt, + receipt: trackedReceipt, } as CategorizeTrackedExpenseTransactionParams; categorizeTrackedExpense(trackedExpenseInformation, transactionParams, createdWorkspaceParams); break; From 355d549cd511a6141d3ec54c516ba3c4cbba4a34 Mon Sep 17 00:00:00 2001 From: Sachin Chavda Date: Fri, 8 Nov 2024 03:29:25 +0530 Subject: [PATCH 06/10] lint fix --- src/libs/actions/IOU.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 932e333eb4f68..4c022964e2f6c 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -3843,14 +3843,14 @@ function trackExpense( moneyRequestPreviewReportActionID: iouAction?.reportActionID ?? '-1', moneyRequestReportID: iouReport?.reportID ?? '-1', moneyRequestCreatedReportActionID: createdIOUReportActionID ?? '-1', - actionableWhisperReportActionID: actionableWhisperReportActionID, + actionableWhisperReportActionID, linkedTrackedExpenseReportAction, linkedTrackedExpenseReportID, transactionThreadReportID: transactionThreadReportID ?? '-1', reportPreviewReportActionID: reportPreviewAction?.reportActionID ?? '-1', onyxData, } as CategorizeTrackedExpenseInformation; - // eslint-disable-next-line object-shorthand + const transactionParams = { amount, currency, From 9210a431c3097c93de86bbfae1d20d6442d6b993 Mon Sep 17 00:00:00 2001 From: Sachin Chavda Date: Fri, 8 Nov 2024 03:41:58 +0530 Subject: [PATCH 07/10] prettier --- src/libs/actions/IOU.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 4c022964e2f6c..c69d5f51041f8 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -3850,7 +3850,7 @@ function trackExpense( reportPreviewReportActionID: reportPreviewAction?.reportActionID ?? '-1', onyxData, } as CategorizeTrackedExpenseInformation; - + const transactionParams = { amount, currency, From 384f79c56e6ae17c772811d218ffe5c54436b201 Mon Sep 17 00:00:00 2001 From: Sachin Chavda Date: Thu, 5 Dec 2024 04:10:00 +0530 Subject: [PATCH 08/10] Lint --- src/libs/actions/IOU.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 0831c6baf7047..613714c84194d 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -124,7 +124,7 @@ type CategorizeTrackedExpenseInformation = { transactionThreadReportID: string; reportPreviewReportActionID: string; onyxData: OnyxData | undefined; - isDraftPolicy: boolean, + isDraftPolicy: boolean; }; type CategorizeTrackedExpenseTransactionParams = { amount: number; @@ -3483,8 +3483,16 @@ function categorizeTrackedExpense( transactionParams: CategorizeTrackedExpenseTransactionParams, createdWorkspaceParams?: CreateWorkspaceParams, ) { - const {transactionID, moneyRequestReportID, actionableWhisperReportActionID, linkedTrackedExpenseReportAction, linkedTrackedExpenseReportID, transactionThreadReportID, onyxData,isDraftPolicy} = - trackedExpenseInformation; + const { + transactionID, + moneyRequestReportID, + actionableWhisperReportActionID, + linkedTrackedExpenseReportAction, + linkedTrackedExpenseReportID, + transactionThreadReportID, + onyxData, + isDraftPolicy, + } = trackedExpenseInformation; const {optimisticData, successData, failureData} = onyxData ?? {}; const { From db14ca8257a3fa143155ef50ab13f433527d17a4 Mon Sep 17 00:00:00 2001 From: Sachin Chavda Date: Mon, 9 Dec 2024 02:56:06 +0530 Subject: [PATCH 09/10] Refactor IOU.categorizeTrackedExpense --- src/libs/actions/IOU.ts | 101 +++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 47 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 613714c84194d..ea77afe3ac350 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -112,21 +112,8 @@ type TrackExpenseInformation = { actionableWhisperReportActionIDParam?: string; onyxData: OnyxData; }; -type CategorizeTrackedExpenseInformation = { - policyID: string; - transactionID: string; - moneyRequestPreviewReportActionID: string; - moneyRequestReportID: string; - moneyRequestCreatedReportActionID: string; - actionableWhisperReportActionID: string; - linkedTrackedExpenseReportAction: OnyxTypes.ReportAction; - linkedTrackedExpenseReportID: string; - transactionThreadReportID: string; - reportPreviewReportActionID: string; - onyxData: OnyxData | undefined; - isDraftPolicy: boolean; -}; type CategorizeTrackedExpenseTransactionParams = { + transactionID: string; amount: number; currency: string; comment: string; @@ -139,6 +126,27 @@ type CategorizeTrackedExpenseTransactionParams = { billable?: boolean; receipt?: Receipt; }; +type CategorizeTrackedExpensePolicyParams = { + policyID: string; + isDraftPolicy: boolean; +}; +type CategorizeTrackedExpenseReportInformation = { + moneyRequestPreviewReportActionID: string; + moneyRequestReportID: string; + moneyRequestCreatedReportActionID: string; + actionableWhisperReportActionID: string; + linkedTrackedExpenseReportAction: OnyxTypes.ReportAction; + linkedTrackedExpenseReportID: string; + transactionThreadReportID: string; + reportPreviewReportActionID: string; +}; +type CategorizeTrackedExpenseParams = { + onyxData: OnyxData | undefined; + reportInformation: CategorizeTrackedExpenseReportInformation; + transactionParams: CategorizeTrackedExpenseTransactionParams; + policyParams: CategorizeTrackedExpensePolicyParams; + createdWorkspaceParams?: CreateWorkspaceParams; +}; type SendInvoiceInformation = { senderWorkspaceID: string; receiver: Partial; @@ -3478,23 +3486,12 @@ function convertTrackedExpenseToRequest( API.write(WRITE_COMMANDS.CONVERT_TRACKED_EXPENSE_TO_REQUEST, parameters, {optimisticData, successData, failureData}); } -function categorizeTrackedExpense( - trackedExpenseInformation: CategorizeTrackedExpenseInformation, - transactionParams: CategorizeTrackedExpenseTransactionParams, - createdWorkspaceParams?: CreateWorkspaceParams, -) { - const { - transactionID, - moneyRequestReportID, - actionableWhisperReportActionID, - linkedTrackedExpenseReportAction, - linkedTrackedExpenseReportID, - transactionThreadReportID, - onyxData, - isDraftPolicy, - } = trackedExpenseInformation; +function categorizeTrackedExpense(trackedExpenseParams: CategorizeTrackedExpenseParams) { + const {onyxData, reportInformation, transactionParams, policyParams, createdWorkspaceParams} = trackedExpenseParams; const {optimisticData, successData, failureData} = onyxData ?? {}; - + const {transactionID} = transactionParams; + const {isDraftPolicy} = policyParams; + const {actionableWhisperReportActionID, moneyRequestReportID, linkedTrackedExpenseReportAction, linkedTrackedExpenseReportID, transactionThreadReportID} = reportInformation; const { optimisticData: moveTransactionOptimisticData, successData: moveTransactionSuccessData, @@ -3514,7 +3511,9 @@ function categorizeTrackedExpense( successData?.push(...moveTransactionSuccessData); failureData?.push(...moveTransactionFailureData); const parameters = { - ...trackedExpenseInformation, + onyxData, + ...reportInformation, + ...policyParams, ...transactionParams, modifiedExpenseReportActionID, policyExpenseChatReportID: createdWorkspaceParams?.expenseChatReportID, @@ -3889,22 +3888,8 @@ function trackExpense( if (!linkedTrackedExpenseReportAction || !actionableWhisperReportActionID || !linkedTrackedExpenseReportID) { return; } - const trackedExpenseInformation = { - policyID: chatReport?.policyID ?? '-1', - transactionID: transaction?.transactionID ?? '-1', - moneyRequestPreviewReportActionID: iouAction?.reportActionID ?? '-1', - moneyRequestReportID: iouReport?.reportID ?? '-1', - moneyRequestCreatedReportActionID: createdIOUReportActionID ?? '-1', - actionableWhisperReportActionID, - linkedTrackedExpenseReportAction, - linkedTrackedExpenseReportID, - transactionThreadReportID: transactionThreadReportID ?? '-1', - reportPreviewReportActionID: reportPreviewAction?.reportActionID ?? '-1', - onyxData, - isDraftPolicy, - } as CategorizeTrackedExpenseInformation; - const transactionParams = { + transactionID: transaction?.transactionID ?? '-1', amount, currency, comment, @@ -3917,7 +3902,29 @@ function trackExpense( billable, receipt: trackedReceipt, } as CategorizeTrackedExpenseTransactionParams; - categorizeTrackedExpense(trackedExpenseInformation, transactionParams, createdWorkspaceParams); + const policyParams = { + policyID: chatReport?.policyID ?? '-1', + isDraftPolicy, + }; + const reportInformation = { + moneyRequestPreviewReportActionID: iouAction?.reportActionID ?? '-1', + moneyRequestReportID: iouReport?.reportID ?? '-1', + moneyRequestCreatedReportActionID: createdIOUReportActionID ?? '-1', + actionableWhisperReportActionID, + linkedTrackedExpenseReportAction, + linkedTrackedExpenseReportID, + transactionThreadReportID: transactionThreadReportID ?? '-1', + reportPreviewReportActionID: reportPreviewAction?.reportActionID ?? '-1', + }; + const trackedExpenseParams = { + onyxData, + reportInformation, + transactionParams, + policyParams, + createdWorkspaceParams, + } as CategorizeTrackedExpenseParams; + + categorizeTrackedExpense(trackedExpenseParams); break; } case CONST.IOU.ACTION.SHARE: { From 0f13fb3ae618dcecdca3de71e8a52e57ec958bc9 Mon Sep 17 00:00:00 2001 From: Sachin Chavda Date: Mon, 9 Dec 2024 15:27:49 +0530 Subject: [PATCH 10/10] Refactor --- src/libs/actions/IOU.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index ea77afe3ac350..1c6faf5dbb7ac 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -3901,7 +3901,7 @@ function trackExpense( tag, billable, receipt: trackedReceipt, - } as CategorizeTrackedExpenseTransactionParams; + }; const policyParams = { policyID: chatReport?.policyID ?? '-1', isDraftPolicy, @@ -3922,7 +3922,7 @@ function trackExpense( transactionParams, policyParams, createdWorkspaceParams, - } as CategorizeTrackedExpenseParams; + }; categorizeTrackedExpense(trackedExpenseParams); break;