Skip to content

Commit b255a12

Browse files
authored
Merge pull request Expensify#64725 from thelullabyy/fix/62235
Split - Missing split preview when expense is split in room
2 parents 2583d8a + 82a5138 commit b255a12

3 files changed

Lines changed: 14 additions & 14 deletions

File tree

src/components/MoneyRequestConfirmationList.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -446,13 +446,16 @@ function MoneyRequestConfirmationList({
446446
if (!isDistanceRequest || !transactionID) {
447447
return;
448448
}
449+
if (isReadOnly) {
450+
return;
451+
}
449452
const amount = DistanceRequestUtils.getDistanceRequestAmount(distance, unit ?? CONST.CUSTOM_UNITS.DISTANCE_UNIT_MILES, rate ?? 0);
450453
setMoneyRequestAmount(transactionID, amount, currency ?? '');
451454
isFirstUpdatedDistanceAmount.current = true;
452-
}, [distance, rate, unit, transactionID, currency, isDistanceRequest]);
455+
}, [distance, rate, isReadOnly, unit, transactionID, currency, isDistanceRequest]);
453456

454457
useEffect(() => {
455-
if (!shouldCalculateDistanceAmount || !transactionID) {
458+
if (!shouldCalculateDistanceAmount || !transactionID || isReadOnly) {
456459
return;
457460
}
458461

@@ -464,7 +467,7 @@ function MoneyRequestConfirmationList({
464467
if (isTypeSplit && !isPolicyExpenseChat && amount && transaction?.currency) {
465468
setSplitShares(transaction, amount, currency, participantAccountIDs);
466469
}
467-
}, [shouldCalculateDistanceAmount, distanceRequestAmount, transactionID, currency, isTypeSplit, isPolicyExpenseChat, selectedParticipantsProp, transaction]);
470+
}, [shouldCalculateDistanceAmount, isReadOnly, distanceRequestAmount, transactionID, currency, isTypeSplit, isPolicyExpenseChat, selectedParticipantsProp, transaction]);
468471

469472
const previousTaxCode = usePrevious(transaction?.taxCode);
470473

@@ -785,7 +788,7 @@ function MoneyRequestConfirmationList({
785788
}, [isTypeSplit, translate, payeePersonalDetails, getSplitSectionHeader, splitParticipants, selectedParticipants, isCreateExpenseFlow, isTestReceipt]);
786789

787790
useEffect(() => {
788-
if (!isDistanceRequest || (isMovingTransactionFromTrackExpense && !isPolicyExpenseChat) || !transactionID) {
791+
if (!isDistanceRequest || (isMovingTransactionFromTrackExpense && !isPolicyExpenseChat) || !transactionID || isReadOnly) {
789792
// 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.
790793
// When moving to a policy chat (e.g. sharing with an accountant), we should recalculate the distance merchant with the policy's rate.
791794
return;
@@ -814,6 +817,7 @@ function MoneyRequestConfirmationList({
814817
transaction,
815818
transactionID,
816819
action,
820+
isReadOnly,
817821
isMovingTransactionFromTrackExpense,
818822
]);
819823

src/components/ReportActionItem/TransactionPreview/index.tsx

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import ControlSelection from '@libs/ControlSelection';
1111
import {convertToDisplayString} from '@libs/CurrencyUtils';
1212
import {canUseTouchScreen} from '@libs/DeviceCapabilities';
1313
import Navigation from '@libs/Navigation/Navigation';
14-
import {getIOUActionForReportID, getOriginalMessage, isMoneyRequestAction as isMoneyRequestActionReportActionsUtils} from '@libs/ReportActionsUtils';
14+
import {getOriginalMessage, isMoneyRequestAction as isMoneyRequestActionReportActionsUtils} from '@libs/ReportActionsUtils';
1515
import {getTransactionDetails} from '@libs/ReportUtils';
1616
import {getReviewNavigationRoute} from '@libs/TransactionPreviewUtils';
1717
import {getOriginalTransactionWithSplitInfo, isCardTransaction, removeSettledAndApprovedTransactions} from '@libs/TransactionUtils';
@@ -83,20 +83,16 @@ function TransactionPreview(props: TransactionPreviewProps) {
8383
Navigation.navigate(getReviewNavigationRoute(route, transaction, duplicates));
8484
}, [route, transaction, duplicates]);
8585

86-
let transactionPreview = transaction;
86+
const transactionPreview = transaction;
8787

8888
const {originalTransaction, isBillSplit} = getOriginalTransactionWithSplitInfo(transaction);
8989

90-
if (isBillSplit) {
91-
transactionPreview = originalTransaction;
92-
}
90+
const iouAction = action;
9391

9492
// See description of `transactionRawAmount` prop for more context
9593
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
9694
const transactionRawAmount = (transaction?.modifiedAmount || transaction?.amount) ?? 0;
9795

98-
const iouAction = isBillSplit && originalTransaction ? (getIOUActionForReportID(chatReportID, originalTransaction.transactionID) ?? action) : action;
99-
10096
const shouldDisableOnPress = isBillSplit && isEmptyObject(transaction);
10197
const isTransactionMadeWithCard = isCardTransaction(transaction);
10298
const showCashOrCardTranslation = isTransactionMadeWithCard ? 'iou.card' : 'iou.cash';
@@ -117,7 +113,7 @@ function TransactionPreview(props: TransactionPreviewProps) {
117113
/* eslint-disable-next-line react/jsx-props-no-spreading */
118114
{...props}
119115
action={iouAction}
120-
isBillSplit={isBillSplit}
116+
isBillSplit={isBillSplit && !transaction?.comment?.originalTransactionID}
121117
chatReport={chatReport}
122118
personalDetails={personalDetails}
123119
transaction={transactionPreview}

src/pages/home/report/PureReportActionItem.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -841,9 +841,7 @@ function PureReportActionItem({
841841

842842
// Show the preview for when expense is present
843843
if (isIOURequestReportAction(action)) {
844-
const isSplitInGroupChat = moneyRequestActionType === CONST.IOU.REPORT_ACTION_TYPE.SPLIT && report?.chatType === CONST.REPORT.CHAT_TYPE.GROUP;
845844
const isSplitScanWithNoAmount = moneyRequestActionType === CONST.IOU.REPORT_ACTION_TYPE.SPLIT && moneyRequestOriginalMessage?.amount === 0;
846-
const shouldShowSplitPreview = isSplitInGroupChat || isSplitScanWithNoAmount;
847845
const chatReportID = moneyRequestOriginalMessage?.IOUReportID ? report?.chatReportID : reportID;
848846
// There is no single iouReport for bill splits, so only 1:1 requests require an iouReportID
849847
const iouReportID = moneyRequestOriginalMessage?.IOUReportID?.toString();
@@ -866,6 +864,8 @@ function PureReportActionItem({
866864
);
867865

868866
if (report?.type === CONST.REPORT.TYPE.CHAT) {
867+
const isSplitBill = moneyRequestActionType === CONST.IOU.REPORT_ACTION_TYPE.SPLIT;
868+
const shouldShowSplitPreview = isSplitBill || isSplitScanWithNoAmount;
869869
if (report.chatType === CONST.REPORT.CHAT_TYPE.SELF_DM || shouldShowSplitPreview) {
870870
children = (
871871
<View style={[styles.mt1, styles.w100]}>

0 commit comments

Comments
 (0)