diff --git a/src/components/MoneyReportHeader.tsx b/src/components/MoneyReportHeader.tsx index cda11b20799ef..b9bef9bdab3e5 100644 --- a/src/components/MoneyReportHeader.tsx +++ b/src/components/MoneyReportHeader.tsx @@ -87,7 +87,6 @@ import { isExported as isExportedUtils, isInvoiceReport as isInvoiceReportUtil, isOpenExpenseReport, - isOpenReport, isProcessingReport, isReportOwner, isSelfDM, @@ -100,7 +99,6 @@ import {shouldRestrictUserBillableActions} from '@libs/SubscriptionUtils'; import type {SkeletonSpanReasonAttributes} from '@libs/telemetry/useSkeletonSpan'; import { allHavePendingRTERViolation, - getChildTransactions, getOriginalTransactionWithSplitInfo, hasCustomUnitOutOfPolicyViolation as hasCustomUnitOutOfPolicyViolationTransactionUtils, hasDuplicateTransactions, @@ -383,17 +381,6 @@ function MoneyReportHeader({ const theme = useTheme(); const {isOffline} = useNetwork(); const {isExpenseSplit} = getOriginalTransactionWithSplitInfo(transaction, originalTransaction); - const [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION); - const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT); - const hasMultipleSplits = useMemo(() => { - if (!transaction?.comment?.originalTransactionID) { - return false; - } - const children = getChildTransactions(allTransactions, allReports, transaction.comment.originalTransactionID); - return children.length > 1; - }, [allTransactions, allReports, transaction?.comment?.originalTransactionID]); - const isReportOpen = isOpenReport(moneyRequestReport); - const shouldShowSplitIndicator = isExpenseSplit && (hasMultipleSplits || isReportOpen); const [policies] = useOnyx(ONYXKEYS.COLLECTION.POLICY); const [isDuplicateActive, temporarilyDisableDuplicateAction] = useThrottledButtonState(); @@ -1534,7 +1521,7 @@ function MoneyReportHeader({ }, }, [CONST.REPORT.SECONDARY_ACTIONS.SPLIT]: { - text: shouldShowSplitIndicator ? translate('iou.editSplits') : translate('iou.split'), + text: isExpenseSplit ? translate('iou.editSplits') : translate('iou.split'), icon: expensifyIcons.ArrowSplit, value: CONST.REPORT.SECONDARY_ACTIONS.SPLIT, sentryLabel: CONST.SENTRY_LABEL.MORE_MENU.SPLIT, @@ -1898,7 +1885,7 @@ function MoneyReportHeader({ } return option; }); - }, [originalSelectedTransactionsOptions, showDeleteModal, dismissedRejectUseExplanation, isDelegateAccessRestricted, showDelegateNoAccessModal]); + }, [originalSelectedTransactionsOptions, showDeleteModal, dismissedRejectUseExplanation]); const shouldShowSelectedTransactionsButton = !!selectedTransactionsOptions.length && !transactionThreadReportID; diff --git a/src/components/MoneyRequestHeader.tsx b/src/components/MoneyRequestHeader.tsx index 4cc8b1c729de5..2a2460aabd816 100644 --- a/src/components/MoneyRequestHeader.tsx +++ b/src/components/MoneyRequestHeader.tsx @@ -43,7 +43,6 @@ import { getPolicyExpenseChat, isCurrentUserSubmitter, isDM, - isOpenReport, isSelfDM, navigateToDetailsPage, rejectMoneyRequestReason, @@ -52,7 +51,6 @@ import {getReviewNavigationRoute} from '@libs/TransactionPreviewUtils'; import { getOriginalTransactionWithSplitInfo, hasCustomUnitOutOfPolicyViolation as hasCustomUnitOutOfPolicyViolationTransactionUtils, - hasMultipleSplitChildren, hasPendingRTERViolation as hasPendingRTERViolationTransactionUtils, isDistanceRequest, isDuplicate as isDuplicateTransactionUtils, @@ -168,14 +166,6 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre const {currentSearchHash} = useSearchStateContext(); const {removeTransaction} = useSearchActionsContext(); const {isExpenseSplit} = getOriginalTransactionWithSplitInfo(transaction, originalTransaction); - const [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION); - const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT); - const hasMultipleSplits = useMemo( - () => hasMultipleSplitChildren(allTransactions, allReports, transaction?.comment?.originalTransactionID), - [allTransactions, allReports, transaction?.comment?.originalTransactionID], - ); - const isReportOpen = isOpenReport(parentReport); - const shouldShowSplitIndicator = isExpenseSplit && (hasMultipleSplits || isReportOpen); const [cardList] = useOnyx(ONYXKEYS.CARD_LIST); const [transactionDrafts] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_DRAFT, {selector: validTransactionDraftsSelector}); const draftTransactionIDs = Object.keys(transactionDrafts ?? {}); @@ -496,7 +486,7 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre }, }, [CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.SPLIT]: { - text: shouldShowSplitIndicator ? translate('iou.editSplits') : translate('iou.split'), + text: isExpenseSplit ? translate('iou.editSplits') : translate('iou.split'), icon: expensifyIcons.ArrowSplit, value: CONST.REPORT.SECONDARY_ACTIONS.SPLIT, onSelected: () => { diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index aa8838e9d75c0..849d14810f945 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -1,5 +1,5 @@ import {Str} from 'expensify-common'; -import React, {useCallback, useMemo, useState} from 'react'; +import React, {useCallback, useState} from 'react'; import {View} from 'react-native'; import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; import type {ValueOf} from 'type-fest'; @@ -69,7 +69,6 @@ import { getTripIDFromTransactionParentReportID, isExpenseReport, isInvoiceReport, - isOpenReport, isPaidGroupPolicy, isReportApproved, isReportInGroupPolicy, @@ -90,7 +89,6 @@ import { getTagForDisplay, getTaxName, hasMissingSmartscanFields, - hasMultipleSplitChildren, hasReservationList, hasRoute as hasRouteTransactionUtils, isFromCreditCardImport as isCardTransactionTransactionUtils, @@ -330,14 +328,6 @@ function MoneyRequestView({ const [originalTransaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${getNonEmptyStringOnyxID(transaction?.comment?.originalTransactionID)}`); const {isExpenseSplit} = getOriginalTransactionWithSplitInfo(transaction, originalTransaction); const [transactionReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${transaction?.reportID}`); - const [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION); - const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT); - const hasMultipleSplits = useMemo( - () => hasMultipleSplitChildren(allTransactions, allReports, transaction?.comment?.originalTransactionID), - [allTransactions, allReports, transaction?.comment?.originalTransactionID], - ); - const isReportOpen = isOpenReport(moneyRequestReport); - const shouldShowSplitIndicator = isExpenseSplit && (hasMultipleSplits || isReportOpen); const isSplitAvailable = moneyRequestReport && transaction && @@ -347,7 +337,7 @@ function MoneyRequestView({ const canEditAmount = !isGPSDistanceRequest && isEditable && - (canEditFieldOfMoneyRequest(parentReportAction, CONST.EDIT_REQUEST_FIELD.AMOUNT, undefined, isChatReportArchived) || (shouldShowSplitIndicator && isSplitAvailable)); + (canEditFieldOfMoneyRequest(parentReportAction, CONST.EDIT_REQUEST_FIELD.AMOUNT, undefined, isChatReportArchived) || (isExpenseSplit && isSplitAvailable)); const canEditMerchant = isEditable && canEditFieldOfMoneyRequest(parentReportAction, CONST.EDIT_REQUEST_FIELD.MERCHANT, undefined, isChatReportArchived, undefined, transaction, moneyRequestReport, policy); @@ -512,7 +502,7 @@ function MoneyRequestView({ } else if (shouldShowPaid) { amountDescription += ` ${CONST.DOT_SEPARATOR} ${translate('iou.settledExpensify')}`; } - if (shouldShowSplitIndicator) { + if (isExpenseSplit) { amountDescription += ` ${CONST.DOT_SEPARATOR} ${translate('iou.split')}`; } if (shouldShowConvertedAmount) { @@ -820,7 +810,7 @@ function MoneyRequestView({ return; } - if (shouldShowSplitIndicator && isSplitAvailable) { + if (isExpenseSplit && isSplitAvailable) { initSplitExpense(transaction, policy); return; } diff --git a/src/libs/TransactionUtils/index.ts b/src/libs/TransactionUtils/index.ts index 06426bf23b320..d1e1a0718e5a2 100644 --- a/src/libs/TransactionUtils/index.ts +++ b/src/libs/TransactionUtils/index.ts @@ -2673,16 +2673,6 @@ function getChildTransactions(transactions: OnyxCollection, reports }); } -/** - * Checks if a split transaction has more than one child transaction. - */ -function hasMultipleSplitChildren(transactions: OnyxCollection, reports: OnyxCollection, originalTransactionID: string | undefined): boolean { - if (!originalTransactionID) { - return false; - } - return getChildTransactions(transactions, reports, originalTransactionID).length > 1; -} - /** * Determines whether a report should display the expense breakdown. */ @@ -2892,7 +2882,6 @@ export { getTransactionPendingAction, isTransactionPendingDelete, getChildTransactions, - hasMultipleSplitChildren, createUnreportedExpenses, isDemoTransaction, shouldShowViolation, diff --git a/src/libs/actions/SplitExpenses.ts b/src/libs/actions/SplitExpenses.ts index d641caa0064cb..1864a34cf65c0 100644 --- a/src/libs/actions/SplitExpenses.ts +++ b/src/libs/actions/SplitExpenses.ts @@ -5,7 +5,7 @@ import {calculateAmount} from '@libs/IOUUtils'; import isSearchTopmostFullScreenRoute from '@libs/Navigation/helpers/isSearchTopmostFullScreenRoute'; import Navigation from '@libs/Navigation/Navigation'; import {rand64} from '@libs/NumberUtils'; -import {getTransactionDetails, isOpenReport} from '@libs/ReportUtils'; +import {getTransactionDetails} from '@libs/ReportUtils'; import {buildOptimisticTransaction, getChildTransactions, getOriginalTransactionWithSplitInfo, isDistanceRequest} from '@libs/TransactionUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -47,13 +47,9 @@ function initSplitExpense(transaction: OnyxEntry, policy?: OnyxEntr const originalTransactionID = transaction?.comment?.originalTransactionID; const originalTransaction = allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${originalTransactionID}`]; const {isExpenseSplit} = getOriginalTransactionWithSplitInfo(transaction, originalTransaction); - const relatedTransactions = getChildTransactions(allTransactions, allReports, originalTransactionID); - const hasMultipleSplits = relatedTransactions.length > 1; - const transactionReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${transaction?.reportID}`]; - const isReportOpen = isOpenReport(transactionReport); - const shouldShowSplitIndicator = isExpenseSplit && (hasMultipleSplits || isReportOpen); - if (isExpenseSplit && shouldShowSplitIndicator) { + if (isExpenseSplit) { + const relatedTransactions = getChildTransactions(allTransactions, allReports, originalTransactionID); const transactionDetails = getTransactionDetails(originalTransaction); const splitExpenses = relatedTransactions.map((currentTransaction) => { const currentTransactionReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${currentTransaction?.reportID}`]; @@ -85,6 +81,7 @@ function initSplitExpense(transaction: OnyxEntry, policy?: OnyxEntr const transactionDetails = getTransactionDetails(transaction); const transactionDetailsAmount = transactionDetails?.amount ?? 0; + const transactionReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${transaction?.reportID}`]; const splitAmounts = [ calculateAmount(1, transactionDetailsAmount, transactionDetails?.currency ?? '', false),