From 7096e08c501eca481938481b36843a67ccf25ed4 Mon Sep 17 00:00:00 2001 From: rory Date: Mon, 22 Jul 2024 11:54:48 -0700 Subject: [PATCH 1/8] Delete IOU actions for duplicate transactions --- src/libs/actions/IOU.ts | 54 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 6c8f88649e5e..41f617f91d18 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -7412,11 +7412,61 @@ function mergeDuplicates(params: TransactionMergeParams) { }; }); + console.log('RORY_DEBUG reportID', params.reportID); + console.log('RORY_DEBUG transactionIDList', params.transactionIDList); + console.log('RORY_DEBUG reportActionsForReport', allReportActions?.[`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`]); + + const reportActionsToDelete = Object.values(allReportActions?.[`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`] ?? {})?.filter( + (reportAction): reportAction is ReportAction => { + if (!ReportActionsUtils.isMoneyRequestAction(reportAction)) { + console.log(`RORY_DEBUG skipping reportAction ${reportAction.reportActionID} because it's not an IOU action`); + return false; + } + const message = ReportActionsUtils.getOriginalMessage(reportAction); + if (!message?.IOUTransactionID) { + console.log(`RORY_DEBUG skipping reportAction ${reportAction.reportActionID} because it doesn't have an IOUTransactionID`); + return false; + } + console.log( + `RORY_DEBUG reportAction ${reportAction.reportActionID} ${ + params.transactionIDList.includes(message.IOUTransactionID) ? 'will' : 'will not' + } be included because its IOUTransactionID does not match`, + ); + return params.transactionIDList.includes(message.IOUTransactionID); + }, + ); + + console.log('RORY_DEBUG reportActionsToDelete', reportActionsToDelete); + + const deletedTime = DateUtils.getDBTime(); + const optimisticReportActionsData: OnyxUpdate[] = reportActionsToDelete.map(({reportActionID}) => ({ + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`, + value: { + [reportActionID]: { + originalMessage: { + deleted: deletedTime, + }, + }, + }, + })); + const failureReportActionsData: OnyxUpdate[] = reportActionsToDelete.map(({reportActionID}) => ({ + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`, + value: { + [reportActionID]: { + originalMessage: { + deleted: null, + }, + }, + }, + })); + const optimisticData: OnyxUpdate[] = []; const failureData: OnyxUpdate[] = []; - optimisticData.push(optimisticTransactionData, ...optimisticTransactionDuplicatesData, ...optimisticTransactionViolations); - failureData.push(failureTransactionData, ...failureTransactionDuplicatesData, ...failureTransactionViolations); + optimisticData.push(optimisticTransactionData, ...optimisticTransactionDuplicatesData, ...optimisticTransactionViolations, ...optimisticReportActionsData); + failureData.push(failureTransactionData, ...failureTransactionDuplicatesData, ...failureTransactionViolations, ...failureReportActionsData); API.write(WRITE_COMMANDS.TRANSACTION_MERGE, params, {optimisticData, failureData}); } From e1d62650e2db933dab7d4c7ac0ad18a5c32502c1 Mon Sep 17 00:00:00 2001 From: rory Date: Mon, 22 Jul 2024 12:33:21 -0700 Subject: [PATCH 2/8] Update message as well as originalMessage --- .../ReportActionItem/MoneyRequestAction.tsx | 7 +++++- src/libs/actions/IOU.ts | 24 +++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestAction.tsx b/src/components/ReportActionItem/MoneyRequestAction.tsx index 15f9cee3705c..d4132e6c907a 100644 --- a/src/components/ReportActionItem/MoneyRequestAction.tsx +++ b/src/components/ReportActionItem/MoneyRequestAction.tsx @@ -83,9 +83,14 @@ function MoneyRequestAction({ const styles = useThemeStyles(); const {translate} = useLocalize(); const {isOffline} = useNetwork(); + + const isDeleted = ReportActionsUtils.isDeletedAction(action); + if (isDeleted) { + return null; + } + const isSplitBillAction = ReportActionsUtils.isSplitBillAction(action); const isTrackExpenseAction = ReportActionsUtils.isTrackExpenseAction(action); - const onMoneyRequestPreviewPressed = () => { if (isSplitBillAction) { const reportActionID = action.reportActionID ?? '-1'; diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 41f617f91d18..7c55f481b065 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -7439,25 +7439,41 @@ function mergeDuplicates(params: TransactionMergeParams) { console.log('RORY_DEBUG reportActionsToDelete', reportActionsToDelete); const deletedTime = DateUtils.getDBTime(); - const optimisticReportActionsData: OnyxUpdate[] = reportActionsToDelete.map(({reportActionID}) => ({ + const optimisticReportActionsData: OnyxUpdate[] = reportActionsToDelete.map((reportAction) => ({ onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`, value: { - [reportActionID]: { + [reportAction.reportActionID]: { originalMessage: { deleted: deletedTime, }, + ...(Array.isArray(reportAction.message) && + !!reportAction.message[0] && { + message: [ + { + ...reportAction.message[0], + deleted: deletedTime, + }, + ...reportAction.message.slice(1), + ], + }), + ...(!Array.isArray(reportAction.message) && { + message: { + deleted: deletedTime, + }, + }), }, }, })); - const failureReportActionsData: OnyxUpdate[] = reportActionsToDelete.map(({reportActionID}) => ({ + const failureReportActionsData: OnyxUpdate[] = reportActionsToDelete.map((reportAction) => ({ onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`, value: { - [reportActionID]: { + [reportAction.reportActionID]: { originalMessage: { deleted: null, }, + message: reportAction.message, }, }, })); From 31a3bab718287e3ab8eb8e9ff35ac903cd5a8c80 Mon Sep 17 00:00:00 2001 From: rory Date: Mon, 22 Jul 2024 13:24:56 -0700 Subject: [PATCH 3/8] Optimistically update expenseReport total --- src/libs/actions/IOU.ts | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 7c55f481b065..5e84d6a6da79 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -7416,7 +7416,35 @@ function mergeDuplicates(params: TransactionMergeParams) { console.log('RORY_DEBUG transactionIDList', params.transactionIDList); console.log('RORY_DEBUG reportActionsForReport', allReportActions?.[`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`]); - const reportActionsToDelete = Object.values(allReportActions?.[`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`] ?? {})?.filter( + const duplicateTransactionTotals = params.transactionIDList.reduce((total, id) => { + const duplicateTransaction = allTransactions[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]; + if (!duplicateTransaction) { + return total; + } + return total + duplicateTransaction.amount; + }, 0); + + const expenseReport = ReportConnection.getAllReports()?.[`${ONYXKEYS.COLLECTION.REPORT}${params.reportID}`]; + const expenseReportOptimisticData: OnyxUpdate[] = [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT}${params.reportID}`, + value: { + total: (expenseReport?.total ?? 0) - duplicateTransactionTotals, + }, + }, + ]; + const expenseReportFailureData: OnyxUpdate[] = [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT}${params.reportID}`, + value: { + total: expenseReport?.total, + }, + }, + ]; + + const iouActionsToDelete = Object.values(allReportActions?.[`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`] ?? {})?.filter( (reportAction): reportAction is ReportAction => { if (!ReportActionsUtils.isMoneyRequestAction(reportAction)) { console.log(`RORY_DEBUG skipping reportAction ${reportAction.reportActionID} because it's not an IOU action`); @@ -7436,10 +7464,10 @@ function mergeDuplicates(params: TransactionMergeParams) { }, ); - console.log('RORY_DEBUG reportActionsToDelete', reportActionsToDelete); + console.log('RORY_DEBUG reportActionsToDelete', iouActionsToDelete); const deletedTime = DateUtils.getDBTime(); - const optimisticReportActionsData: OnyxUpdate[] = reportActionsToDelete.map((reportAction) => ({ + const expenseReportActionsOptimisticData: OnyxUpdate[] = iouActionsToDelete.map((reportAction) => ({ onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`, value: { @@ -7465,7 +7493,7 @@ function mergeDuplicates(params: TransactionMergeParams) { }, }, })); - const failureReportActionsData: OnyxUpdate[] = reportActionsToDelete.map((reportAction) => ({ + const expenseReportActionsFailureData: OnyxUpdate[] = iouActionsToDelete.map((reportAction) => ({ onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`, value: { @@ -7481,8 +7509,8 @@ function mergeDuplicates(params: TransactionMergeParams) { const optimisticData: OnyxUpdate[] = []; const failureData: OnyxUpdate[] = []; - optimisticData.push(optimisticTransactionData, ...optimisticTransactionDuplicatesData, ...optimisticTransactionViolations, ...optimisticReportActionsData); - failureData.push(failureTransactionData, ...failureTransactionDuplicatesData, ...failureTransactionViolations, ...failureReportActionsData); + optimisticData.push(optimisticTransactionData, ...optimisticTransactionDuplicatesData, ...optimisticTransactionViolations, ...expenseReportOptimisticData, ...expenseReportActionsOptimisticData); + failureData.push(failureTransactionData, ...failureTransactionDuplicatesData, ...failureTransactionViolations, ...expenseReportFailureData, ...expenseReportActionsFailureData); API.write(WRITE_COMMANDS.TRANSACTION_MERGE, params, {optimisticData, failureData}); } From e3c3b0fea281f2d9e61c3a06cf261972fe2a2a18 Mon Sep 17 00:00:00 2001 From: rory Date: Tue, 23 Jul 2024 07:50:36 -0700 Subject: [PATCH 4/8] Fix TS style --- 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 5e84d6a6da79..2be399183974 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -7509,7 +7509,13 @@ function mergeDuplicates(params: TransactionMergeParams) { const optimisticData: OnyxUpdate[] = []; const failureData: OnyxUpdate[] = []; - optimisticData.push(optimisticTransactionData, ...optimisticTransactionDuplicatesData, ...optimisticTransactionViolations, ...expenseReportOptimisticData, ...expenseReportActionsOptimisticData); + optimisticData.push( + optimisticTransactionData, + ...optimisticTransactionDuplicatesData, + ...optimisticTransactionViolations, + ...expenseReportOptimisticData, + ...expenseReportActionsOptimisticData, + ); failureData.push(failureTransactionData, ...failureTransactionDuplicatesData, ...failureTransactionViolations, ...expenseReportFailureData, ...expenseReportActionsFailureData); API.write(WRITE_COMMANDS.TRANSACTION_MERGE, params, {optimisticData, failureData}); From d6374b6221b66fc1d375db27c5a6d558b5344a04 Mon Sep 17 00:00:00 2001 From: rory Date: Tue, 23 Jul 2024 08:03:47 -0700 Subject: [PATCH 5/8] Remove unnecessary change --- src/components/ReportActionItem/MoneyRequestAction.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestAction.tsx b/src/components/ReportActionItem/MoneyRequestAction.tsx index d4132e6c907a..001d4ead58a5 100644 --- a/src/components/ReportActionItem/MoneyRequestAction.tsx +++ b/src/components/ReportActionItem/MoneyRequestAction.tsx @@ -84,11 +84,6 @@ function MoneyRequestAction({ const {translate} = useLocalize(); const {isOffline} = useNetwork(); - const isDeleted = ReportActionsUtils.isDeletedAction(action); - if (isDeleted) { - return null; - } - const isSplitBillAction = ReportActionsUtils.isSplitBillAction(action); const isTrackExpenseAction = ReportActionsUtils.isTrackExpenseAction(action); const onMoneyRequestPreviewPressed = () => { From 9f5c7eb889761cc77e6b13e3334cf6364371a74c Mon Sep 17 00:00:00 2001 From: rory Date: Tue, 23 Jul 2024 08:42:18 -0700 Subject: [PATCH 6/8] Cleanup code --- src/libs/actions/IOU.ts | 78 ++++++++++++++++--------------------- src/types/utils/Nullable.ts | 5 +++ 2 files changed, 38 insertions(+), 45 deletions(-) create mode 100644 src/types/utils/Nullable.ts diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 1687d60cccef..b16ef2c666da 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -2,7 +2,7 @@ import {format} from 'date-fns'; import {fastMerge, Str} from 'expensify-common'; import type {NullishDeep, OnyxCollection, OnyxEntry, OnyxInputValue, OnyxUpdate} from 'react-native-onyx'; import Onyx from 'react-native-onyx'; -import type {ValueOf} from 'type-fest'; +import type {PartialDeep, ValueOf} from 'type-fest'; import ReceiptGeneric from '@assets/images/receipt-generic.png'; import * as API from '@libs/API'; import type { @@ -63,6 +63,7 @@ import type {OnyxData} from '@src/types/onyx/Request'; import type {Comment, Receipt, ReceiptSource, Routes, SplitShares, TransactionChanges, WaypointCollection} from '@src/types/onyx/Transaction'; import type DeepValueOf from '@src/types/utils/DeepValueOf'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; +import type Nullable from '@src/types/utils/Nullable'; import * as CachedPDFPaths from './CachedPDFPaths'; import * as Category from './Policy/Category'; import * as Policy from './Policy/Policy'; @@ -7412,10 +7413,6 @@ function mergeDuplicates(params: TransactionMergeParams) { }; }); - console.log('RORY_DEBUG reportID', params.reportID); - console.log('RORY_DEBUG transactionIDList', params.transactionIDList); - console.log('RORY_DEBUG reportActionsForReport', allReportActions?.[`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`]); - const duplicateTransactionTotals = params.transactionIDList.reduce((total, id) => { const duplicateTransaction = allTransactions[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]; if (!duplicateTransaction) { @@ -7425,53 +7422,41 @@ function mergeDuplicates(params: TransactionMergeParams) { }, 0); const expenseReport = ReportConnection.getAllReports()?.[`${ONYXKEYS.COLLECTION.REPORT}${params.reportID}`]; - const expenseReportOptimisticData: OnyxUpdate[] = [ - { - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT}${params.reportID}`, - value: { - total: (expenseReport?.total ?? 0) - duplicateTransactionTotals, - }, + const expenseReportOptimisticData: OnyxUpdate = { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT}${params.reportID}`, + value: { + total: (expenseReport?.total ?? 0) - duplicateTransactionTotals, }, - ]; - const expenseReportFailureData: OnyxUpdate[] = [ - { - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT}${params.reportID}`, - value: { - total: expenseReport?.total, - }, + }; + const expenseReportFailureData: OnyxUpdate = { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT}${params.reportID}`, + value: { + total: expenseReport?.total, }, - ]; + }; const iouActionsToDelete = Object.values(allReportActions?.[`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`] ?? {})?.filter( (reportAction): reportAction is ReportAction => { if (!ReportActionsUtils.isMoneyRequestAction(reportAction)) { - console.log(`RORY_DEBUG skipping reportAction ${reportAction.reportActionID} because it's not an IOU action`); return false; } const message = ReportActionsUtils.getOriginalMessage(reportAction); if (!message?.IOUTransactionID) { - console.log(`RORY_DEBUG skipping reportAction ${reportAction.reportActionID} because it doesn't have an IOUTransactionID`); return false; } - console.log( - `RORY_DEBUG reportAction ${reportAction.reportActionID} ${ - params.transactionIDList.includes(message.IOUTransactionID) ? 'will' : 'will not' - } be included because its IOUTransactionID does not match`, - ); return params.transactionIDList.includes(message.IOUTransactionID); }, ); - console.log('RORY_DEBUG reportActionsToDelete', iouActionsToDelete); - const deletedTime = DateUtils.getDBTime(); - const expenseReportActionsOptimisticData: OnyxUpdate[] = iouActionsToDelete.map((reportAction) => ({ + const expenseReportActionsOptimisticData: OnyxUpdate = { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`, - value: { - [reportAction.reportActionID]: { + value: iouActionsToDelete.reduce>>>((val, reportAction) => { + // eslint-disable-next-line no-param-reassign + val[reportAction.reportActionID] = { originalMessage: { deleted: deletedTime, }, @@ -7490,21 +7475,24 @@ function mergeDuplicates(params: TransactionMergeParams) { deleted: deletedTime, }, }), - }, - }, - })); - const expenseReportActionsFailureData: OnyxUpdate[] = iouActionsToDelete.map((reportAction) => ({ + }; + return val; + }, {}), + }; + const expenseReportActionsFailureData: OnyxUpdate = { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`, - value: { - [reportAction.reportActionID]: { + value: iouActionsToDelete.reduce>>>>((val, reportAction) => { + // eslint-disable-next-line no-param-reassign + val[reportAction.reportActionID] = { originalMessage: { deleted: null, }, message: reportAction.message, - }, - }, - })); + }; + return val; + }, {}), + }; const optimisticData: OnyxUpdate[] = []; const failureData: OnyxUpdate[] = []; @@ -7513,10 +7501,10 @@ function mergeDuplicates(params: TransactionMergeParams) { optimisticTransactionData, ...optimisticTransactionDuplicatesData, ...optimisticTransactionViolations, - ...expenseReportOptimisticData, - ...expenseReportActionsOptimisticData, + expenseReportOptimisticData, + expenseReportActionsOptimisticData, ); - failureData.push(failureTransactionData, ...failureTransactionDuplicatesData, ...failureTransactionViolations, ...expenseReportFailureData, ...expenseReportActionsFailureData); + failureData.push(failureTransactionData, ...failureTransactionDuplicatesData, ...failureTransactionViolations, expenseReportFailureData, expenseReportActionsFailureData); API.write(WRITE_COMMANDS.TRANSACTION_MERGE, params, {optimisticData, failureData}); } diff --git a/src/types/utils/Nullable.ts b/src/types/utils/Nullable.ts new file mode 100644 index 000000000000..3aa74b3ad254 --- /dev/null +++ b/src/types/utils/Nullable.ts @@ -0,0 +1,5 @@ +type Nullable = { + [P in keyof T]: T[P] extends Record ? Nullable | null : T[P] | null; +}; + +export default Nullable; From 3ed7d57c50a1a5bd66300248b650c8cd4329d98a Mon Sep 17 00:00:00 2001 From: rory Date: Tue, 23 Jul 2024 08:58:30 -0700 Subject: [PATCH 7/8] Fix types --- src/libs/actions/IOU.ts | 3 +-- src/types/utils/Nullable.ts | 5 ----- 2 files changed, 1 insertion(+), 7 deletions(-) delete mode 100644 src/types/utils/Nullable.ts diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index b16ef2c666da..93d0d29f56a7 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -63,7 +63,6 @@ import type {OnyxData} from '@src/types/onyx/Request'; import type {Comment, Receipt, ReceiptSource, Routes, SplitShares, TransactionChanges, WaypointCollection} from '@src/types/onyx/Transaction'; import type DeepValueOf from '@src/types/utils/DeepValueOf'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; -import type Nullable from '@src/types/utils/Nullable'; import * as CachedPDFPaths from './CachedPDFPaths'; import * as Category from './Policy/Category'; import * as Policy from './Policy/Policy'; @@ -7482,7 +7481,7 @@ function mergeDuplicates(params: TransactionMergeParams) { const expenseReportActionsFailureData: OnyxUpdate = { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${params.reportID}`, - value: iouActionsToDelete.reduce>>>>((val, reportAction) => { + value: iouActionsToDelete.reduce>>>>((val, reportAction) => { // eslint-disable-next-line no-param-reassign val[reportAction.reportActionID] = { originalMessage: { diff --git a/src/types/utils/Nullable.ts b/src/types/utils/Nullable.ts deleted file mode 100644 index 3aa74b3ad254..000000000000 --- a/src/types/utils/Nullable.ts +++ /dev/null @@ -1,5 +0,0 @@ -type Nullable = { - [P in keyof T]: T[P] extends Record ? Nullable | null : T[P] | null; -}; - -export default Nullable; From 85169e9eb20f671ff7a82801e99edb60cd8f360c Mon Sep 17 00:00:00 2001 From: rory Date: Tue, 23 Jul 2024 08:59:17 -0700 Subject: [PATCH 8/8] Reduce diff --- src/components/ReportActionItem/MoneyRequestAction.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/MoneyRequestAction.tsx b/src/components/ReportActionItem/MoneyRequestAction.tsx index 001d4ead58a5..15f9cee3705c 100644 --- a/src/components/ReportActionItem/MoneyRequestAction.tsx +++ b/src/components/ReportActionItem/MoneyRequestAction.tsx @@ -83,9 +83,9 @@ function MoneyRequestAction({ const styles = useThemeStyles(); const {translate} = useLocalize(); const {isOffline} = useNetwork(); - const isSplitBillAction = ReportActionsUtils.isSplitBillAction(action); const isTrackExpenseAction = ReportActionsUtils.isTrackExpenseAction(action); + const onMoneyRequestPreviewPressed = () => { if (isSplitBillAction) { const reportActionID = action.reportActionID ?? '-1';