From 944e76c74590e625adecaaff9f0e9fa578e5fd18 Mon Sep 17 00:00:00 2001 From: Ishpaul Singh <104348397+ishpaul777@users.noreply.github.com> Date: Wed, 24 Sep 2025 16:44:20 +0530 Subject: [PATCH] Revert "remove inline selector for transaction key" --- .../TransactionPreview/index.tsx | 10 +++- src/hooks/useReportTransactions.ts | 19 ++----- src/hooks/useTransactionsByID.ts | 25 -------- src/hooks/useTripTransactions.ts | 26 +++------ src/pages/AddUnreportedExpense.tsx | 57 ++++++++----------- src/pages/Search/EmptySearchView.tsx | 7 +-- .../TransactionDuplicate/Confirmation.tsx | 20 +++++-- .../DuplicateTransactionItem.tsx | 4 +- .../TransactionDuplicate/ReviewBillable.tsx | 11 +++- .../TransactionDuplicate/ReviewCategory.tsx | 10 +++- .../ReviewDescription.tsx | 10 +++- .../TransactionDuplicate/ReviewMerchant.tsx | 10 +++- .../ReviewReimbursable.tsx | 10 +++- src/pages/TransactionDuplicate/ReviewTag.tsx | 11 +++- .../TransactionDuplicate/ReviewTaxCode.tsx | 10 +++- 15 files changed, 121 insertions(+), 119 deletions(-) delete mode 100644 src/hooks/useTransactionsByID.ts diff --git a/src/components/ReportActionItem/TransactionPreview/index.tsx b/src/components/ReportActionItem/TransactionPreview/index.tsx index d895bdd8f99a..9ed04e1cb169 100644 --- a/src/components/ReportActionItem/TransactionPreview/index.tsx +++ b/src/components/ReportActionItem/TransactionPreview/index.tsx @@ -21,7 +21,6 @@ import type {TransactionDuplicateNavigatorParamList} from '@navigation/types'; import {clearWalletTermsError} from '@userActions/PaymentMethods'; import {clearIOUError} from '@userActions/Report'; import CONST from '@src/CONST'; -import useTransactionsByID from '@src/hooks/useTransactionsByID'; import ONYXKEYS from '@src/ONYXKEYS'; import SCREENS from '@src/SCREENS'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; @@ -58,7 +57,14 @@ function TransactionPreview(props: TransactionPreviewProps) { // Get transaction violations for given transaction id from onyx, find duplicated transactions violations and get duplicates const allDuplicateIDs = useMemo(() => violations?.find((violation) => violation.name === CONST.VIOLATIONS.DUPLICATED_TRANSACTION)?.data?.duplicates ?? [], [violations]); - const [allDuplicates] = useTransactionsByID(allDuplicateIDs); + const [allDuplicates] = useOnyx( + ONYXKEYS.COLLECTION.TRANSACTION, + { + selector: (allTransactions) => allDuplicateIDs.map((id) => allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]), + canBeMissing: true, + }, + [allDuplicateIDs], + ); const duplicates = useMemo(() => removeSettledAndApprovedTransactions(allDuplicates ?? []), [allDuplicates]); const sessionAccountID = session?.accountID; const areThereDuplicates = allDuplicateIDs.length > 0 && duplicates.length > 0 && allDuplicateIDs.length === duplicates.length; diff --git a/src/hooks/useReportTransactions.ts b/src/hooks/useReportTransactions.ts index 800ce0a99f7d..ccc18f5cba6c 100644 --- a/src/hooks/useReportTransactions.ts +++ b/src/hooks/useReportTransactions.ts @@ -1,5 +1,3 @@ -import {useCallback} from 'react'; -import type {OnyxCollection} from 'react-native-onyx'; import ONYXKEYS from '@src/ONYXKEYS'; import type {Transaction} from '@src/types/onyx'; import getEmptyArray from '@src/types/utils/getEmptyArray'; @@ -9,25 +7,16 @@ import useOnyx from './useOnyx'; * Hook to get all transactions for a specific report */ function useReportTransactions(reportID: string | undefined): Transaction[] { - const reportTransactionsSelector = useCallback( - (transactions: OnyxCollection) => { + const [reportTransactions = getEmptyArray()] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, { + selector: (transactions) => { if (!transactions || !reportID) { return []; } return Object.values(transactions).filter((transaction): transaction is Transaction => !!transaction && transaction.reportID === reportID); }, - [reportID], - ); - - const [reportTransactions = getEmptyArray()] = useOnyx( - ONYXKEYS.COLLECTION.TRANSACTION, - { - selector: reportTransactionsSelector, - canBeMissing: true, - }, - [reportTransactionsSelector], - ); + canBeMissing: true, + }); return reportTransactions; } diff --git a/src/hooks/useTransactionsByID.ts b/src/hooks/useTransactionsByID.ts deleted file mode 100644 index 049eb4d5fdf4..000000000000 --- a/src/hooks/useTransactionsByID.ts +++ /dev/null @@ -1,25 +0,0 @@ -import {useCallback} from 'react'; -import type {OnyxCollection} from 'react-native-onyx'; -import ONYXKEYS from '@src/ONYXKEYS'; -import type {Transaction} from '@src/types/onyx'; -import useOnyx from './useOnyx'; - -function useTransactionsByID(transactionIDs: string[]) { - const transactionsSelector = useCallback( - (transactions: OnyxCollection) => transactionIDs.map((id) => transactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]), - [transactionIDs], - ); - - const [transactions] = useOnyx( - ONYXKEYS.COLLECTION.TRANSACTION, - { - selector: transactionsSelector, - canBeMissing: true, - }, - [transactionsSelector], - ); - - return [transactions]; -} - -export default useTransactionsByID; diff --git a/src/hooks/useTripTransactions.ts b/src/hooks/useTripTransactions.ts index 5df3587d2317..bf15ec0876fe 100644 --- a/src/hooks/useTripTransactions.ts +++ b/src/hooks/useTripTransactions.ts @@ -1,5 +1,3 @@ -import {useCallback} from 'react'; -import type {OnyxCollection} from 'react-native-onyx'; import ONYXKEYS from '@src/ONYXKEYS'; import type {Transaction} from '@src/types/onyx'; import getEmptyArray from '@src/types/utils/getEmptyArray'; @@ -21,27 +19,19 @@ function useTripTransactions(reportID: string | undefined): Transaction[] { Object.values(reports ?? {}) .filter((report) => report && report.chatReportID === reportID) .map((report) => report?.reportID), - canBeMissing: true, }); - - const tripTransactionsSelector = useCallback( - (transactions: OnyxCollection) => { - if (!tripTransactionReportIDs.length) { - return []; - } - - return Object.values(transactions ?? {}).filter((transaction): transaction is Transaction => !!transaction && tripTransactionReportIDs.includes(transaction.reportID)); - }, - [tripTransactionReportIDs], - ); - const [tripTransactions = getEmptyArray()] = useOnyx( ONYXKEYS.COLLECTION.TRANSACTION, { - selector: tripTransactionsSelector, - canBeMissing: true, + selector: (transactions) => { + if (!tripTransactionReportIDs.length) { + return []; + } + + return Object.values(transactions ?? {}).filter((transaction): transaction is Transaction => !!transaction && tripTransactionReportIDs.includes(transaction.reportID)); + }, }, - [tripTransactionsSelector], + [tripTransactionReportIDs], ); return tripTransactions; } diff --git a/src/pages/AddUnreportedExpense.tsx b/src/pages/AddUnreportedExpense.tsx index a8601ed67653..20cf2cb16715 100644 --- a/src/pages/AddUnreportedExpense.tsx +++ b/src/pages/AddUnreportedExpense.tsx @@ -1,4 +1,4 @@ -import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; +import React, {useEffect, useMemo, useRef, useState} from 'react'; import {InteractionManager} from 'react-native'; import type {OnyxCollection} from 'react-native-onyx'; import EmptyStateComponent from '@components/EmptyStateComponent'; @@ -56,39 +56,32 @@ function AddUnreportedExpense({route}: AddUnreportedExpensePageType) { const session = useSession(); const shouldShowUnreportedTransactionsSkeletons = isLoadingUnreportedTransactions && hasMoreUnreportedTransactionsResults && !isOffline; - const getUnreportedTransactions = useCallback( - (transactions: OnyxCollection) => { - if (!transactions) { - return []; + function getUnreportedTransactions(transactions: OnyxCollection) { + if (!transactions) { + return []; + } + return Object.values(transactions || {}).filter((item) => { + const isUnreported = item?.reportID === CONST.REPORT.UNREPORTED_REPORT_ID || item?.reportID === ''; + if (!isUnreported) { + return false; } - return Object.values(transactions || {}).filter((item) => { - const isUnreported = item?.reportID === CONST.REPORT.UNREPORTED_REPORT_ID || item?.reportID === ''; - if (!isUnreported) { - return false; - } - - if (isPerDiemRequest(item)) { - // Only show per diem expenses if the target workspace has per diem enabled and the per diem expense was created in the same workspace - const workspacePerDiemUnit = getPerDiemCustomUnit(policy); - const perDiemCustomUnitID = item?.comment?.customUnit?.customUnitID; - - return canSubmitPerDiemExpenseFromWorkspace(policy) && (!perDiemCustomUnitID || perDiemCustomUnitID === workspacePerDiemUnit?.customUnitID); - } - - return true; - }); - }, - [policy], - ); - const [transactions = getEmptyArray()] = useOnyx( - ONYXKEYS.COLLECTION.TRANSACTION, - { - selector: getUnreportedTransactions, - canBeMissing: true, - }, - [getUnreportedTransactions], - ); + if (isPerDiemRequest(item)) { + // Only show per diem expenses if the target workspace has per diem enabled and the per diem expense was created in the same workspace + const workspacePerDiemUnit = getPerDiemCustomUnit(policy); + const perDiemCustomUnitID = item?.comment?.customUnit?.customUnitID; + + return canSubmitPerDiemExpenseFromWorkspace(policy) && (!perDiemCustomUnitID || perDiemCustomUnitID === workspacePerDiemUnit?.customUnitID); + } + + return true; + }); + } + + const [transactions = getEmptyArray()] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, { + selector: (_transactions) => getUnreportedTransactions(_transactions), + canBeMissing: true, + }); const fetchMoreUnreportedTransactions = () => { if (!hasMoreUnreportedTransactionsResults || isLoadingUnreportedTransactions) { diff --git a/src/pages/Search/EmptySearchView.tsx b/src/pages/Search/EmptySearchView.tsx index 2db8255c0093..9a545acee17f 100644 --- a/src/pages/Search/EmptySearchView.tsx +++ b/src/pages/Search/EmptySearchView.tsx @@ -42,7 +42,7 @@ import variables from '@styles/variables'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import type {IntroSelected, PersonalDetails, Policy, Transaction} from '@src/types/onyx'; +import type {IntroSelected, PersonalDetails, Policy} from '@src/types/onyx'; import type {SearchDataTypes} from '@src/types/onyx/SearchResults'; type EmptySearchViewProps = { @@ -142,9 +142,6 @@ function EmptySearchView({similarSearchHash, type, groupBy, hasResults}: EmptySe ); } -const hasTransactionsSelector = (transactions: OnyxCollection) => - Object.values(transactions ?? {}).filter((transaction) => transaction?.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE).length > 0; - function EmptySearchViewContent({ similarSearchHash, type, @@ -169,7 +166,7 @@ function EmptySearchViewContent({ const [hasTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, { canBeMissing: true, - selector: hasTransactionsSelector, + selector: (transactions) => Object.values(transactions ?? {}).filter((transaction) => transaction?.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE).length > 0, }); const [tryNewDot] = useOnyx(ONYXKEYS.NVP_TRY_NEW_DOT, {selector: tryNewDotOnyxSelector, canBeMissing: true}); diff --git a/src/pages/TransactionDuplicate/Confirmation.tsx b/src/pages/TransactionDuplicate/Confirmation.tsx index 3063feb31674..99ff16fc3fe3 100644 --- a/src/pages/TransactionDuplicate/Confirmation.tsx +++ b/src/pages/TransactionDuplicate/Confirmation.tsx @@ -17,7 +17,6 @@ import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useReviewDuplicatesNavigation from '@hooks/useReviewDuplicatesNavigation'; import useThemeStyles from '@hooks/useThemeStyles'; -import useTransactionsByID from '@hooks/useTransactionsByID'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import Navigation from '@libs/Navigation/Navigation'; import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; @@ -53,7 +52,14 @@ function Confirmation() { () => transactionViolations?.find((violation) => violation.name === CONST.VIOLATIONS.DUPLICATED_TRANSACTION)?.data?.duplicates ?? [], [transactionViolations], ); - const [allDuplicates] = useTransactionsByID(allDuplicateIDs); + const [allDuplicates] = useOnyx( + ONYXKEYS.COLLECTION.TRANSACTION, + { + selector: (allTransactions) => allDuplicateIDs.map((id) => allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]), + canBeMissing: true, + }, + [allDuplicateIDs], + ); const compareResult = TransactionUtils.compareDuplicateTransactionFields(transaction, allDuplicates, reviewDuplicates?.reportID); const {goBack} = useReviewDuplicatesNavigation(Object.keys(compareResult.change ?? {}), 'confirmation', route.params.threadReportID, route.params.backTo); @@ -63,8 +69,14 @@ function Confirmation() { const reportAction = Object.values(reportActions ?? {}).find( (action) => ReportActionsUtils.isMoneyRequestAction(action) && ReportActionsUtils.getOriginalMessage(action)?.IOUTransactionID === reviewDuplicates?.transactionID, ); - - const [duplicates] = useTransactionsByID(reviewDuplicates?.duplicates ?? []); + const [duplicates] = useOnyx( + ONYXKEYS.COLLECTION.TRANSACTION, + { + selector: (allTransactions) => reviewDuplicates?.duplicates.map((id) => allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]), + canBeMissing: true, + }, + [reviewDuplicates?.duplicates], + ); const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${report?.policyID}`, {canBeMissing: true}); const transactionsMergeParams = useMemo( () => TransactionUtils.buildMergeDuplicatesParams(reviewDuplicates, duplicates ?? [], newTransaction), diff --git a/src/pages/TransactionDuplicate/DuplicateTransactionItem.tsx b/src/pages/TransactionDuplicate/DuplicateTransactionItem.tsx index cd76e21de3a9..45d8ddb7fb86 100644 --- a/src/pages/TransactionDuplicate/DuplicateTransactionItem.tsx +++ b/src/pages/TransactionDuplicate/DuplicateTransactionItem.tsx @@ -21,8 +21,6 @@ type DuplicateTransactionItemProps = { policies: OnyxCollection; }; -const linkedTransactionRouteErrorSelector = (transaction: OnyxEntry) => transaction?.errorFields?.route ?? null; - function DuplicateTransactionItem({transaction, index, allReports, policies}: DuplicateTransactionItemProps) { const styles = useThemeStyles(); const [userWalletTierName] = useOnyx(ONYXKEYS.USER_WALLET, {selector: (wallet) => wallet?.tierName, canBeMissing: false}); @@ -52,7 +50,7 @@ function DuplicateTransactionItem({transaction, index, allReports, policies}: Du const [linkedTransactionRouteError] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${isMoneyRequestAction(action) && getOriginalMessage(action)?.IOUTransactionID}`, { canBeMissing: true, - selector: linkedTransactionRouteErrorSelector, + selector: (transactionItem) => transactionItem?.errorFields?.route ?? null, }); const contextValue = useMemo(() => ({shouldOpenReportInRHP: true}), []); diff --git a/src/pages/TransactionDuplicate/ReviewBillable.tsx b/src/pages/TransactionDuplicate/ReviewBillable.tsx index fba682d85a09..e4f51273b660 100644 --- a/src/pages/TransactionDuplicate/ReviewBillable.tsx +++ b/src/pages/TransactionDuplicate/ReviewBillable.tsx @@ -5,7 +5,6 @@ import ScreenWrapper from '@components/ScreenWrapper'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useReviewDuplicatesNavigation from '@hooks/useReviewDuplicatesNavigation'; -import useTransactionsByID from '@hooks/useTransactionsByID'; import {setReviewDuplicatesKey} from '@libs/actions/Transaction'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; @@ -30,8 +29,14 @@ function ReviewBillable() { () => transactionViolations?.find((violation) => violation.name === CONST.VIOLATIONS.DUPLICATED_TRANSACTION)?.data?.duplicates ?? [], [transactionViolations], ); - - const [allDuplicates] = useTransactionsByID(allDuplicateIDs); + const [allDuplicates] = useOnyx( + ONYXKEYS.COLLECTION.TRANSACTION, + { + selector: (allTransactions) => allDuplicateIDs.map((id) => allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]), + canBeMissing: true, + }, + [allDuplicateIDs], + ); const compareResult = compareDuplicateTransactionFields(transaction, allDuplicates, reviewDuplicates?.reportID); const stepNames = Object.keys(compareResult.change ?? {}).map((key, index) => (index + 1).toString()); const {currentScreenIndex, goBack, navigateToNextScreen} = useReviewDuplicatesNavigation( diff --git a/src/pages/TransactionDuplicate/ReviewCategory.tsx b/src/pages/TransactionDuplicate/ReviewCategory.tsx index 881baef90051..3d8a0851a6ba 100644 --- a/src/pages/TransactionDuplicate/ReviewCategory.tsx +++ b/src/pages/TransactionDuplicate/ReviewCategory.tsx @@ -5,7 +5,6 @@ import ScreenWrapper from '@components/ScreenWrapper'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useReviewDuplicatesNavigation from '@hooks/useReviewDuplicatesNavigation'; -import useTransactionsByID from '@hooks/useTransactionsByID'; import {setReviewDuplicatesKey} from '@libs/actions/Transaction'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; @@ -30,7 +29,14 @@ function ReviewCategory() { () => transactionViolations?.find((violation) => violation.name === CONST.VIOLATIONS.DUPLICATED_TRANSACTION)?.data?.duplicates ?? [], [transactionViolations], ); - const [allDuplicates] = useTransactionsByID(allDuplicateIDs); + const [allDuplicates] = useOnyx( + ONYXKEYS.COLLECTION.TRANSACTION, + { + selector: (allTransactions) => allDuplicateIDs.map((id) => allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]), + canBeMissing: true, + }, + [allDuplicateIDs], + ); const compareResult = compareDuplicateTransactionFields(transaction, allDuplicates, reviewDuplicates?.reportID); const stepNames = Object.keys(compareResult.change ?? {}).map((key, index) => (index + 1).toString()); diff --git a/src/pages/TransactionDuplicate/ReviewDescription.tsx b/src/pages/TransactionDuplicate/ReviewDescription.tsx index efba85800ed4..01b3f5b4a332 100644 --- a/src/pages/TransactionDuplicate/ReviewDescription.tsx +++ b/src/pages/TransactionDuplicate/ReviewDescription.tsx @@ -5,7 +5,6 @@ import ScreenWrapper from '@components/ScreenWrapper'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useReviewDuplicatesNavigation from '@hooks/useReviewDuplicatesNavigation'; -import useTransactionsByID from '@hooks/useTransactionsByID'; import {setReviewDuplicatesKey} from '@libs/actions/Transaction'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; @@ -32,7 +31,14 @@ function ReviewDescription() { () => transactionViolations?.find((violation) => violation.name === CONST.VIOLATIONS.DUPLICATED_TRANSACTION)?.data?.duplicates ?? [], [transactionViolations], ); - const [allDuplicates] = useTransactionsByID(allDuplicateIDs); + const [allDuplicates] = useOnyx( + ONYXKEYS.COLLECTION.TRANSACTION, + { + selector: (allTransactions) => allDuplicateIDs.map((id) => allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]), + canBeMissing: true, + }, + [allDuplicateIDs], + ); const compareResult = compareDuplicateTransactionFields(transaction, allDuplicates, reviewDuplicates?.reportID); const stepNames = Object.keys(compareResult.change ?? {}).map((key, index) => (index + 1).toString()); diff --git a/src/pages/TransactionDuplicate/ReviewMerchant.tsx b/src/pages/TransactionDuplicate/ReviewMerchant.tsx index e4a657a38ac6..36bd7b8e6c8d 100644 --- a/src/pages/TransactionDuplicate/ReviewMerchant.tsx +++ b/src/pages/TransactionDuplicate/ReviewMerchant.tsx @@ -5,7 +5,6 @@ import ScreenWrapper from '@components/ScreenWrapper'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useReviewDuplicatesNavigation from '@hooks/useReviewDuplicatesNavigation'; -import useTransactionsByID from '@hooks/useTransactionsByID'; import {setReviewDuplicatesKey} from '@libs/actions/Transaction'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; @@ -30,7 +29,14 @@ function ReviewMerchant() { () => transactionViolations?.find((violation) => violation.name === CONST.VIOLATIONS.DUPLICATED_TRANSACTION)?.data?.duplicates ?? [], [transactionViolations], ); - const [allDuplicates] = useTransactionsByID(allDuplicateIDs); + const [allDuplicates] = useOnyx( + ONYXKEYS.COLLECTION.TRANSACTION, + { + selector: (allTransactions) => allDuplicateIDs.map((id) => allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]), + canBeMissing: true, + }, + [allDuplicateIDs], + ); const compareResult = compareDuplicateTransactionFields(transaction, allDuplicates, reviewDuplicates?.reportID); const stepNames = Object.keys(compareResult.change ?? {}).map((key, index) => (index + 1).toString()); diff --git a/src/pages/TransactionDuplicate/ReviewReimbursable.tsx b/src/pages/TransactionDuplicate/ReviewReimbursable.tsx index 15d8765d3858..42fed32465f4 100644 --- a/src/pages/TransactionDuplicate/ReviewReimbursable.tsx +++ b/src/pages/TransactionDuplicate/ReviewReimbursable.tsx @@ -5,7 +5,6 @@ import ScreenWrapper from '@components/ScreenWrapper'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useReviewDuplicatesNavigation from '@hooks/useReviewDuplicatesNavigation'; -import useTransactionsByID from '@hooks/useTransactionsByID'; import {setReviewDuplicatesKey} from '@libs/actions/Transaction'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; @@ -30,7 +29,14 @@ function ReviewReimbursable() { () => transactionViolations?.find((violation) => violation.name === CONST.VIOLATIONS.DUPLICATED_TRANSACTION)?.data?.duplicates ?? [], [transactionViolations], ); - const [allDuplicates] = useTransactionsByID(allDuplicateIDs); + const [allDuplicates] = useOnyx( + ONYXKEYS.COLLECTION.TRANSACTION, + { + selector: (allTransactions) => allDuplicateIDs.map((id) => allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]), + canBeMissing: true, + }, + [allDuplicateIDs], + ); const compareResult = compareDuplicateTransactionFields(transaction, allDuplicates, reviewDuplicates?.reportID); const stepNames = Object.keys(compareResult.change ?? {}).map((key, index) => (index + 1).toString()); diff --git a/src/pages/TransactionDuplicate/ReviewTag.tsx b/src/pages/TransactionDuplicate/ReviewTag.tsx index c316dcd506f8..6204d56e43fc 100644 --- a/src/pages/TransactionDuplicate/ReviewTag.tsx +++ b/src/pages/TransactionDuplicate/ReviewTag.tsx @@ -5,7 +5,6 @@ import ScreenWrapper from '@components/ScreenWrapper'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useReviewDuplicatesNavigation from '@hooks/useReviewDuplicatesNavigation'; -import useTransactionsByID from '@hooks/useTransactionsByID'; import {setReviewDuplicatesKey} from '@libs/actions/Transaction'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; @@ -32,7 +31,15 @@ function ReviewTag() { () => transactionViolations?.find((violation) => violation.name === CONST.VIOLATIONS.DUPLICATED_TRANSACTION)?.data?.duplicates ?? [], [transactionViolations], ); - const [allDuplicates] = useTransactionsByID(allDuplicateIDs); + const [allDuplicates] = useOnyx( + ONYXKEYS.COLLECTION.TRANSACTION, + { + selector: (allTransactions) => allDuplicateIDs.map((id) => allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]), + canBeMissing: true, + }, + [allDuplicateIDs], + ); + const compareResult = compareDuplicateTransactionFields(transaction, allDuplicates, reviewDuplicates?.reportID); const stepNames = Object.keys(compareResult.change ?? {}).map((key, index) => (index + 1).toString()); const {currentScreenIndex, goBack, navigateToNextScreen} = useReviewDuplicatesNavigation( diff --git a/src/pages/TransactionDuplicate/ReviewTaxCode.tsx b/src/pages/TransactionDuplicate/ReviewTaxCode.tsx index be38ccefa070..319e90f3f423 100644 --- a/src/pages/TransactionDuplicate/ReviewTaxCode.tsx +++ b/src/pages/TransactionDuplicate/ReviewTaxCode.tsx @@ -5,7 +5,6 @@ import ScreenWrapper from '@components/ScreenWrapper'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useReviewDuplicatesNavigation from '@hooks/useReviewDuplicatesNavigation'; -import useTransactionsByID from '@hooks/useTransactionsByID'; import {setReviewDuplicatesKey} from '@libs/actions/Transaction'; import {convertToBackendAmount} from '@libs/CurrencyUtils'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; @@ -37,7 +36,14 @@ function ReviewTaxRate() { () => transactionViolations?.find((violation) => violation.name === CONST.VIOLATIONS.DUPLICATED_TRANSACTION)?.data?.duplicates ?? [], [transactionViolations], ); - const [allDuplicates] = useTransactionsByID(allDuplicateIDs); + const [allDuplicates] = useOnyx( + ONYXKEYS.COLLECTION.TRANSACTION, + { + selector: (allTransactions) => allDuplicateIDs.map((id) => allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${id}`]), + canBeMissing: true, + }, + [allDuplicateIDs], + ); const compareResult = compareDuplicateTransactionFields(transaction, allDuplicates, reviewDuplicates?.reportID); const stepNames = Object.keys(compareResult.change ?? {}).map((key, index) => (index + 1).toString());