From 2410e2eab541d3636455d7079b01cc08b53554ba Mon Sep 17 00:00:00 2001 From: thelullabyy Date: Mon, 23 Jun 2025 15:14:49 +0700 Subject: [PATCH 1/2] fix: missing split preview when expense is split in room --- .../ReportActionItem/TransactionPreview/index.tsx | 12 ++++-------- src/pages/home/report/PureReportActionItem.tsx | 4 ++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/components/ReportActionItem/TransactionPreview/index.tsx b/src/components/ReportActionItem/TransactionPreview/index.tsx index 4590fa3d0002..e23569d9ed39 100644 --- a/src/components/ReportActionItem/TransactionPreview/index.tsx +++ b/src/components/ReportActionItem/TransactionPreview/index.tsx @@ -9,7 +9,7 @@ import useTransactionViolations from '@hooks/useTransactionViolations'; import ControlSelection from '@libs/ControlSelection'; import {convertToDisplayString} from '@libs/CurrencyUtils'; import {canUseTouchScreen} from '@libs/DeviceCapabilities'; -import {getIOUActionForReportID, getOriginalMessage, isMoneyRequestAction as isMoneyRequestActionReportActionsUtils} from '@libs/ReportActionsUtils'; +import {getOriginalMessage, isMoneyRequestAction as isMoneyRequestActionReportActionsUtils} from '@libs/ReportActionsUtils'; import {getTransactionDetails} from '@libs/ReportUtils'; import {getReviewNavigationRoute} from '@libs/TransactionPreviewUtils'; import {getOriginalTransactionWithSplitInfo, isCardTransaction, removeSettledAndApprovedTransactions} from '@libs/TransactionUtils'; @@ -78,15 +78,11 @@ function TransactionPreview(props: TransactionPreviewProps) { Navigation.navigate(getReviewNavigationRoute(route, report, transaction, duplicates)); }, [duplicates, report, route, transaction]); - let transactionPreview = transaction; + const transactionPreview = transaction; const {originalTransaction, isBillSplit} = getOriginalTransactionWithSplitInfo(transaction); - if (isBillSplit) { - transactionPreview = originalTransaction; - } - - const iouAction = isBillSplit && originalTransaction ? (getIOUActionForReportID(chatReportID, originalTransaction.transactionID) ?? action) : action; + const iouAction = action; const shouldDisableOnPress = isBillSplit && isEmptyObject(transaction); const isTransactionMadeWithCard = isCardTransaction(transaction); @@ -108,7 +104,7 @@ function TransactionPreview(props: TransactionPreviewProps) { /* eslint-disable-next-line react/jsx-props-no-spreading */ {...props} action={iouAction} - isBillSplit={isBillSplit} + isBillSplit={isBillSplit && !transaction?.comment?.originalTransactionID} chatReport={chatReport} personalDetails={personalDetails} transaction={transactionPreview} diff --git a/src/pages/home/report/PureReportActionItem.tsx b/src/pages/home/report/PureReportActionItem.tsx index ad124bbc20f4..cce810cb1759 100644 --- a/src/pages/home/report/PureReportActionItem.tsx +++ b/src/pages/home/report/PureReportActionItem.tsx @@ -839,9 +839,7 @@ function PureReportActionItem({ // Show the preview for when expense is present if (isIOURequestReportAction(action)) { - const isSplitInGroupChat = moneyRequestActionType === CONST.IOU.REPORT_ACTION_TYPE.SPLIT && report?.chatType === CONST.REPORT.CHAT_TYPE.GROUP; const isSplitScanWithNoAmount = moneyRequestActionType === CONST.IOU.REPORT_ACTION_TYPE.SPLIT && moneyRequestOriginalMessage?.amount === 0; - const shouldShowSplitPreview = isSplitInGroupChat || isSplitScanWithNoAmount; const chatReportID = moneyRequestOriginalMessage?.IOUReportID ? report?.chatReportID : reportID; // There is no single iouReport for bill splits, so only 1:1 requests require an iouReportID const iouReportID = moneyRequestOriginalMessage?.IOUReportID?.toString(); @@ -863,6 +861,8 @@ function PureReportActionItem({ ); if (report?.type === CONST.REPORT.TYPE.CHAT) { + const isSplitBill = moneyRequestActionType === CONST.IOU.REPORT_ACTION_TYPE.SPLIT; + const shouldShowSplitPreview = isSplitBill || isSplitScanWithNoAmount; if (report.chatType === CONST.REPORT.CHAT_TYPE.SELF_DM || shouldShowSplitPreview) { children = ( From 82a5138d0c31e248add7ade8bc1476ae0a4038bd Mon Sep 17 00:00:00 2001 From: thelullabyy Date: Tue, 8 Jul 2025 15:20:49 +0700 Subject: [PATCH 2/2] update code --- src/components/MoneyRequestConfirmationList.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index a2a34e5e88e4..ca7fd0557eac 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -441,13 +441,16 @@ function MoneyRequestConfirmationList({ if (!isDistanceRequest || !transactionID) { return; } + if (isReadOnly) { + return; + } const amount = DistanceRequestUtils.getDistanceRequestAmount(distance, unit ?? CONST.CUSTOM_UNITS.DISTANCE_UNIT_MILES, rate ?? 0); setMoneyRequestAmount(transactionID, amount, currency ?? ''); isFirstUpdatedDistanceAmount.current = true; - }, [distance, rate, unit, transactionID, currency, isDistanceRequest]); + }, [distance, rate, isReadOnly, unit, transactionID, currency, isDistanceRequest]); useEffect(() => { - if (!shouldCalculateDistanceAmount || !transactionID) { + if (!shouldCalculateDistanceAmount || !transactionID || isReadOnly) { return; } @@ -459,7 +462,7 @@ function MoneyRequestConfirmationList({ if (isTypeSplit && !isPolicyExpenseChat && amount && transaction?.currency) { setSplitShares(transaction, amount, currency, participantAccountIDs); } - }, [shouldCalculateDistanceAmount, distanceRequestAmount, transactionID, currency, isTypeSplit, isPolicyExpenseChat, selectedParticipantsProp, transaction]); + }, [shouldCalculateDistanceAmount, isReadOnly, distanceRequestAmount, transactionID, currency, isTypeSplit, isPolicyExpenseChat, selectedParticipantsProp, transaction]); const previousTaxCode = usePrevious(transaction?.taxCode); @@ -780,7 +783,7 @@ function MoneyRequestConfirmationList({ }, [isTypeSplit, translate, payeePersonalDetails, getSplitSectionHeader, splitParticipants, selectedParticipants, isCreateExpenseFlow, isTestReceipt]); useEffect(() => { - if (!isDistanceRequest || (isMovingTransactionFromTrackExpense && !isPolicyExpenseChat) || !transactionID) { + if (!isDistanceRequest || (isMovingTransactionFromTrackExpense && !isPolicyExpenseChat) || !transactionID || isReadOnly) { // We don't want to recalculate the distance merchant when moving a transaction from Track Expense to a 1:1 chat, because the distance rate will be the same default P2P rate. // When moving to a policy chat (e.g. sharing with an accountant), we should recalculate the distance merchant with the policy's rate. return; @@ -809,6 +812,7 @@ function MoneyRequestConfirmationList({ transaction, transactionID, action, + isReadOnly, isMovingTransactionFromTrackExpense, ]);