From 97538ac44d20c6209e540065ef72079d7bbe0fd1 Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Wed, 26 Mar 2025 17:09:29 +0300 Subject: [PATCH 1/5] Revert "Revert "Fix - Update the scanned expense creation flow to allow user to see full receipt"" This reverts commit b3ac1398b65d9c030919e643f731910f88657864. --- src/ROUTES.ts | 8 +- src/components/AttachmentModal.tsx | 25 +++++- .../MoneyRequestConfirmationListFooter.tsx | 6 +- src/libs/Navigation/types.ts | 2 + src/libs/actions/IOU.ts | 5 ++ src/pages/TransactionReceiptPage.tsx | 84 +++++++++++++++---- .../step/IOURequestStepConfirmation.tsx | 1 + src/styles/index.ts | 6 +- 8 files changed, 109 insertions(+), 28 deletions(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 4fbb5b9a3819b..715b9ce8d4e55 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -1822,15 +1822,17 @@ const ROUTES = { MIGRATED_USER_WELCOME_MODAL: 'onboarding/migrated-user-welcome', TRANSACTION_RECEIPT: { - route: 'r/:reportID/transaction/:transactionID/receipt', - getRoute: (reportID: string | undefined, transactionID: string | undefined, readonly = false, isFromReviewDuplicates = false) => { + route: 'r/:reportID/transaction/:transactionID/receipt/:action?/:iouType?', + getRoute: (reportID: string | undefined, transactionID: string | undefined, readonly = false, isFromReviewDuplicates = false, action?: IOUAction, iouType?: IOUType) => { if (!reportID) { Log.warn('Invalid reportID is used to build the TRANSACTION_RECEIPT route'); } if (!transactionID) { Log.warn('Invalid transactionID is used to build the TRANSACTION_RECEIPT route'); } - return `r/${reportID}/transaction/${transactionID}/receipt?readonly=${readonly}${isFromReviewDuplicates ? '&isFromReviewDuplicates=true' : ''}` as const; + return `r/${reportID}/transaction/${transactionID}/receipt${action ? `/${action}` : ''}${iouType ? `/${iouType}` : ''}?readonly=${readonly}${ + isFromReviewDuplicates ? '&isFromReviewDuplicates=true' : '' + }` as const; }, }, diff --git a/src/components/AttachmentModal.tsx b/src/components/AttachmentModal.tsx index f76ade0db8796..563b2a9a90ef9 100644 --- a/src/components/AttachmentModal.tsx +++ b/src/components/AttachmentModal.tsx @@ -21,6 +21,7 @@ import {hasEReceipt, hasMissingSmartscanFields, hasReceipt, hasReceiptSource, is import type {AvatarSource} from '@libs/UserUtils'; import variables from '@styles/variables'; import {detachReceipt} from '@userActions/IOU'; +import type {IOUAction, IOUType} from '@src/CONST'; import CONST from '@src/CONST'; import type {TranslationPaths} from '@src/languages/types'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -129,6 +130,15 @@ type AttachmentModalProps = { /** A function as a child to pass modal launching methods to */ children?: React.FC; + /** The iou action of the expense creation flow of which we are displaying the receipt for. */ + iouAction?: IOUAction; + + /** The iou type of the expense creation flow of which we are displaying the receipt for. */ + iouType?: IOUType; + + /** The id of the draft transaction linked to the receipt. */ + draftTransactionID?: string; + fallbackSource?: AvatarSource; canEditReceipt?: boolean; @@ -166,6 +176,9 @@ function AttachmentModal({ type = undefined, accountID = undefined, shouldDisableSendButton = false, + draftTransactionID, + iouAction, + iouType: iouTypeProp, attachmentLink = '', }: AttachmentModalProps) { const styles = useThemeStyles(); @@ -185,7 +198,7 @@ function AttachmentModal({ const {shouldUseNarrowLayout} = useResponsiveLayout(); const nope = useSharedValue(false); const isOverlayModalVisible = (isReceiptAttachment && isDeleteReceiptConfirmModalVisible) || (!isReceiptAttachment && isAttachmentInvalid); - const iouType = useMemo(() => (isTrackExpenseAction ? CONST.IOU.TYPE.TRACK : CONST.IOU.TYPE.SUBMIT), [isTrackExpenseAction]); + const iouType = useMemo(() => iouTypeProp ?? (isTrackExpenseAction ? CONST.IOU.TYPE.TRACK : CONST.IOU.TYPE.SUBMIT), [isTrackExpenseAction, iouTypeProp]); const parentReportAction = getReportAction(report?.parentReportID, report?.parentReportActionID); // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const transactionID = (isMoneyRequestAction(parentReportAction) && getOriginalMessage(parentReportAction)?.IOUTransactionID) || CONST.DEFAULT_NUMBER_ID; @@ -437,13 +450,19 @@ function AttachmentModal({ closeModal(true); InteractionManager.runAfterInteractions(() => { Navigation.navigate( - ROUTES.MONEY_REQUEST_STEP_SCAN.getRoute(CONST.IOU.ACTION.EDIT, iouType, transaction?.transactionID, report?.reportID, Navigation.getActiveRouteWithoutParams()), + ROUTES.MONEY_REQUEST_STEP_SCAN.getRoute( + iouAction ?? CONST.IOU.ACTION.EDIT, + iouType, + draftTransactionID ?? transaction?.transactionID, + report?.reportID, + Navigation.getActiveRouteWithoutParams(), + ), ); }); }, }); } - if (!isOffline && allowDownload && !isLocalSource) { + if ((!isOffline && allowDownload && !isLocalSource) || !!draftTransactionID) { menuItems.push({ icon: Expensicons.Download, text: translate('common.download'), diff --git a/src/components/MoneyRequestConfirmationListFooter.tsx b/src/components/MoneyRequestConfirmationListFooter.tsx index e728b7adc494d..bee481ca18e32 100644 --- a/src/components/MoneyRequestConfirmationListFooter.tsx +++ b/src/components/MoneyRequestConfirmationListFooter.tsx @@ -706,7 +706,7 @@ function MoneyRequestConfirmationListFooter({ return; } - Navigation.navigate(ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID)); + Navigation.navigate(ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType)); }} accessibilityRole={CONST.ROLE.BUTTON} accessibilityLabel={translate('accessibilityHints.viewAttachment')} @@ -727,7 +727,7 @@ function MoneyRequestConfirmationListFooter({ return; } - Navigation.navigate(ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID)); + Navigation.navigate(ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType)); }} disabled={!shouldDisplayReceipt || isThumbnail} accessibilityRole={CONST.ROLE.BUTTON} @@ -769,6 +769,8 @@ function MoneyRequestConfirmationListFooter({ fileExtension, isDistanceRequest, transactionID, + action, + iouType, reportID, ], ); diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index a1594e87c5c9a..2f10d35fd2c21 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -1865,6 +1865,8 @@ type AuthScreensParamList = SharedScreensParamList & { transactionID: string; readonly?: string; isFromReviewDuplicates?: string; + action?: IOUAction; + iouType?: IOUType; }; [SCREENS.CONNECTION_COMPLETE]: undefined; [NAVIGATORS.SHARE_MODAL_NAVIGATOR]: NavigatorScreenParams; diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 0b70b6c630509..0486cf40b967d 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -9963,6 +9963,7 @@ function navigateToStartStepIfScanFileCannotBeRead( transactionID: string, reportID: string, receiptType: string | undefined, + onFailureCallback?: () => void, ) { if (!receiptFilename || !receiptPath) { return; @@ -9971,6 +9972,10 @@ function navigateToStartStepIfScanFileCannotBeRead( const onFailure = () => { setMoneyRequestReceipt(transactionID, '', '', true); if (requestType === CONST.IOU.REQUEST_TYPE.MANUAL) { + if (onFailureCallback) { + onFailureCallback(); + return; + } Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_SCAN.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID, Navigation.getActiveRouteWithoutParams())); return; } diff --git a/src/pages/TransactionReceiptPage.tsx b/src/pages/TransactionReceiptPage.tsx index 78a35fcd163bf..85a0397ad5cba 100644 --- a/src/pages/TransactionReceiptPage.tsx +++ b/src/pages/TransactionReceiptPage.tsx @@ -1,6 +1,7 @@ import React, {useEffect} from 'react'; import {useOnyx} from 'react-native-onyx'; import AttachmentModal from '@components/AttachmentModal'; +import {navigateToStartStepIfScanFileCannotBeRead} from '@libs/actions/IOU'; import {openReport} from '@libs/actions/Report'; import Navigation from '@libs/Navigation/Navigation'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; @@ -13,58 +14,100 @@ import { isOneTransactionThread as isOneTransactionThreadReportUtils, isTrackExpenseReport as isTrackExpenseReportReportUtils, } from '@libs/ReportUtils'; -import {hasEReceipt, hasReceiptSource} from '@libs/TransactionUtils'; +import {getRequestType, hasEReceipt, hasReceiptSource} from '@libs/TransactionUtils'; import tryResolveUrlFromApiRoot from '@libs/tryResolveUrlFromApiRoot'; import navigationRef from '@navigation/navigationRef'; import CONST from '@src/CONST'; import NAVIGATORS from '@src/NAVIGATORS'; import ONYXKEYS from '@src/ONYXKEYS'; +import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; type TransactionReceiptProps = PlatformStackScreenProps; function TransactionReceipt({route}: TransactionReceiptProps) { - const [report] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${route.params.reportID ?? CONST.DEFAULT_NUMBER_ID}`); - const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${route.params.transactionID ?? CONST.DEFAULT_NUMBER_ID}`); - const [reportMetadata = {isLoadingInitialReportActions: true}] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_METADATA}${route.params.reportID ?? CONST.DEFAULT_NUMBER_ID}`); - const receiptURIs = getThumbnailAndImageURIs(transaction); - - const imageSource = tryResolveUrlFromApiRoot(receiptURIs.image ?? ''); + const reportID = route.params.reportID; + const transactionID = route.params.transactionID; + const action = route.params.action; + const [report] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${reportID ?? CONST.DEFAULT_NUMBER_ID}`); + const [transactionMain] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID ?? CONST.DEFAULT_NUMBER_ID}`); + const [transactionDraft] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID ?? CONST.DEFAULT_NUMBER_ID}`); + const [reportMetadata = {isLoadingInitialReportActions: true}] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_METADATA}${reportID ?? CONST.DEFAULT_NUMBER_ID}`); + const isDraftTransaction = !!action; + const transaction = isDraftTransaction ? transactionDraft : transactionMain; + const receiptURIs = getThumbnailAndImageURIs(transaction); const isLocalFile = receiptURIs.isLocalFile; const readonly = route.params.readonly === 'true'; const isFromReviewDuplicates = route.params.isFromReviewDuplicates === 'true'; + const imageSource = isDraftTransaction ? transactionDraft?.receipt?.source : tryResolveUrlFromApiRoot(receiptURIs.image ?? ''); const parentReportAction = getReportAction(report?.parentReportID, report?.parentReportActionID); const canEditReceipt = canEditFieldOfMoneyRequest(parentReportAction, CONST.EDIT_REQUEST_FIELD.RECEIPT); const canDeleteReceipt = canEditFieldOfMoneyRequest(parentReportAction, CONST.EDIT_REQUEST_FIELD.RECEIPT, true); const isEReceipt = transaction && !hasReceiptSource(transaction) && hasEReceipt(transaction); const isTrackExpenseAction = isTrackExpenseReportReportActionsUtils(parentReportAction); + const iouType = route.params.iouType; useEffect(() => { - if (report && transaction) { + if ((!!report && !!transaction) || isDraftTransaction) { return; } - openReport(route.params.reportID); + openReport(reportID); // I'm disabling the warning, as it expects to use exhaustive deps, even though we want this useEffect to run only on the first render. // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps }, []); + const receiptPath = transaction?.receipt?.source; + + useEffect(() => { + if (!isDraftTransaction || !iouType || !transaction) { + return; + } + + const requestType = getRequestType(transaction); + const receiptFilename = transaction?.filename; + const receiptType = transaction?.receipt?.type; + navigateToStartStepIfScanFileCannotBeRead( + receiptFilename, + receiptPath, + () => {}, + requestType, + iouType, + transactionID, + reportID, + receiptType, + () => + Navigation.goBack( + ROUTES.MONEY_REQUEST_STEP_SCAN.getRoute( + CONST.IOU.ACTION.CREATE, + iouType, + transactionID, + reportID, + ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(action, iouType, transactionID, reportID), + ), + ), + ); + + // eslint-disable-next-line react-compiler/react-compiler + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [receiptPath]); + const onModalClose = () => { // Receipt Page can be opened either from Reports or from Search RHP view // We have to handle going back to correct screens, if it was opened from RHP just close the modal, otherwise go to Report Page const rootState = navigationRef.getRootState() as State; const secondToLastRoute = rootState.routes.at(-2); - if (secondToLastRoute?.name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR) { + if (secondToLastRoute?.name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR || isDraftTransaction) { Navigation.dismissModal(); } else { const isOneTransactionThread = isOneTransactionThreadReportUtils(report?.reportID, report?.parentReportID, parentReportAction); - const reportID = isOneTransactionThread ? report?.parentReportID : report?.reportID; - if (!reportID) { + const dismissModalReportID = isOneTransactionThread ? report?.parentReportID : report?.reportID; + if (!dismissModalReportID) { Navigation.dismissModal(); return; } - Navigation.dismissModalWithReport({reportID}); + Navigation.dismissModalWithReport({reportID: dismissModalReportID}); } }; @@ -73,20 +116,25 @@ function TransactionReceipt({route}: TransactionReceiptProps) { // eslint-disable-next-line rulesdir/no-negated-variables const shouldShowNotFoundPage = - isTrackExpenseReport || transaction?.reportID === CONST.REPORT.SPLIT_REPORTID || isFromReviewDuplicates ? !transaction : moneyRequestReportID !== transaction?.reportID; + isTrackExpenseReport || isDraftTransaction || transaction?.reportID === CONST.REPORT.SPLIT_REPORTID || isFromReviewDuplicates + ? !transaction + : moneyRequestReportID !== transaction?.reportID; return ( borderRadius: 16, margin: 20, overflow: 'hidden', + borderWidth: 1, + borderColor: theme.border, }, reportPreviewBox: { @@ -4744,8 +4746,8 @@ const styles = (theme: ThemeColors) => ...spacing.mh5, ...spacing.mv3, overflow: 'hidden', - borderWidth: 2, - borderColor: theme.cardBG, + borderWidth: 1, + borderColor: theme.border, borderRadius: variables.componentBorderRadiusLarge, height: 180, maxWidth: 360, From c9ec7ee410e7aae1644c60f2b19f787fb2f78ee4 Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Wed, 26 Mar 2025 18:10:59 +0300 Subject: [PATCH 2/5] fix regression --- src/components/MoneyRequestConfirmationList.tsx | 5 +++++ .../MoneyRequestConfirmationListFooter.tsx | 17 +++++++++++++++-- .../request/step/IOURequestStepConfirmation.tsx | 1 + 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 65353279d3ff1..64745cf416127 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -175,6 +175,9 @@ type MoneyRequestConfirmationListProps = { /** Whether the expense is in the process of being confirmed */ isConfirming?: boolean; + /** Whether the component is rendered inside IOURequestStepConfirmation page */ + isFromIOUStepConfirmationPage?: boolean; + /** The PDF load error callback */ onPDFLoadError?: () => void; @@ -197,6 +200,7 @@ function MoneyRequestConfirmationList({ shouldShowSmartScanFields = true, isEditingSplitBill, iouCurrencyCode, + isFromIOUStepConfirmationPage, iouMerchant, selectedParticipants: selectedParticipantsProp, payeePersonalDetails: payeePersonalDetailsProp, @@ -1077,6 +1081,7 @@ function MoneyRequestConfirmationList({ unit={unit} onPDFLoadError={onPDFLoadError} onPDFPassword={onPDFPassword} + isFromIOUStepConfirmationPage={isFromIOUStepConfirmationPage} /> ); diff --git a/src/components/MoneyRequestConfirmationListFooter.tsx b/src/components/MoneyRequestConfirmationListFooter.tsx index bee481ca18e32..8471db4d66e7c 100644 --- a/src/components/MoneyRequestConfirmationListFooter.tsx +++ b/src/components/MoneyRequestConfirmationListFooter.tsx @@ -184,6 +184,9 @@ type MoneyRequestConfirmationListFooterProps = { /** The transaction ID */ transactionID: string | undefined; + /** Whether the component is rendered inside IOURequestStepConfirmation page */ + isFromIOUStepConfirmationPage?: boolean; + /** The unit */ unit: Unit | undefined; @@ -242,6 +245,7 @@ function MoneyRequestConfirmationListFooter({ unit, onPDFLoadError, onPDFPassword, + isFromIOUStepConfirmationPage = false, }: MoneyRequestConfirmationListFooterProps) { const styles = useThemeStyles(); const {translate, toLocaleDigit} = useLocalize(); @@ -706,7 +710,11 @@ function MoneyRequestConfirmationListFooter({ return; } - Navigation.navigate(ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType)); + Navigation.navigate( + isFromIOUStepConfirmationPage && !isDistanceRequest + ? ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType) + : ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID), + ); }} accessibilityRole={CONST.ROLE.BUTTON} accessibilityLabel={translate('accessibilityHints.viewAttachment')} @@ -727,7 +735,11 @@ function MoneyRequestConfirmationListFooter({ return; } - Navigation.navigate(ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType)); + Navigation.navigate( + isFromIOUStepConfirmationPage && !isDistanceRequest + ? ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType) + : ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID), + ); }} disabled={!shouldDisplayReceipt || isThumbnail} accessibilityRole={CONST.ROLE.BUTTON} @@ -772,6 +784,7 @@ function MoneyRequestConfirmationListFooter({ action, iouType, reportID, + isFromIOUStepConfirmationPage, ], ); diff --git a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx index 0d0f87e3de8a7..458dde97abf05 100644 --- a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx +++ b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx @@ -953,6 +953,7 @@ function IOURequestStepConfirmation({ shouldPlaySound={iouType === CONST.IOU.TYPE.PAY} isConfirmed={isConfirmed} isConfirming={isConfirming} + isFromIOUStepConfirmationPage /> From 88337e7f234030a3d257377b94086796c2d9ce26 Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Thu, 27 Mar 2025 00:38:34 +0300 Subject: [PATCH 3/5] added action condition --- src/components/MoneyRequestConfirmationListFooter.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/MoneyRequestConfirmationListFooter.tsx b/src/components/MoneyRequestConfirmationListFooter.tsx index 8471db4d66e7c..d482492cb69aa 100644 --- a/src/components/MoneyRequestConfirmationListFooter.tsx +++ b/src/components/MoneyRequestConfirmationListFooter.tsx @@ -711,7 +711,7 @@ function MoneyRequestConfirmationListFooter({ } Navigation.navigate( - isFromIOUStepConfirmationPage && !isDistanceRequest + isFromIOUStepConfirmationPage && !isDistanceRequest && action === CONST.IOU.ACTION.CREATE ? ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType) : ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID), ); @@ -736,7 +736,7 @@ function MoneyRequestConfirmationListFooter({ } Navigation.navigate( - isFromIOUStepConfirmationPage && !isDistanceRequest + isFromIOUStepConfirmationPage && !isDistanceRequest && action === CONST.IOU.ACTION.CREATE ? ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType) : ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID), ); From 3acfbccf9bec1e92740d988c9744ef9ef2428d30 Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Thu, 27 Mar 2025 01:23:39 +0300 Subject: [PATCH 4/5] minor fix --- src/components/MoneyRequestConfirmationList.tsx | 8 ++++---- .../MoneyRequestConfirmationListFooter.tsx | 12 ++++++------ .../iou/request/step/IOURequestStepConfirmation.tsx | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 64745cf416127..c3ec5ddb53222 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -175,8 +175,8 @@ type MoneyRequestConfirmationListProps = { /** Whether the expense is in the process of being confirmed */ isConfirming?: boolean; - /** Whether the component is rendered inside IOURequestStepConfirmation page */ - isFromIOUStepConfirmationPage?: boolean; + /** Whether the receipt can be replaced */ + isReceiptEditable?: boolean; /** The PDF load error callback */ onPDFLoadError?: () => void; @@ -200,7 +200,7 @@ function MoneyRequestConfirmationList({ shouldShowSmartScanFields = true, isEditingSplitBill, iouCurrencyCode, - isFromIOUStepConfirmationPage, + isReceiptEditable, iouMerchant, selectedParticipants: selectedParticipantsProp, payeePersonalDetails: payeePersonalDetailsProp, @@ -1081,7 +1081,7 @@ function MoneyRequestConfirmationList({ unit={unit} onPDFLoadError={onPDFLoadError} onPDFPassword={onPDFPassword} - isFromIOUStepConfirmationPage={isFromIOUStepConfirmationPage} + isReceiptEditable={isReceiptEditable} /> ); diff --git a/src/components/MoneyRequestConfirmationListFooter.tsx b/src/components/MoneyRequestConfirmationListFooter.tsx index d482492cb69aa..cceeb78ae615a 100644 --- a/src/components/MoneyRequestConfirmationListFooter.tsx +++ b/src/components/MoneyRequestConfirmationListFooter.tsx @@ -184,8 +184,8 @@ type MoneyRequestConfirmationListFooterProps = { /** The transaction ID */ transactionID: string | undefined; - /** Whether the component is rendered inside IOURequestStepConfirmation page */ - isFromIOUStepConfirmationPage?: boolean; + /** Whether the receipt can be replaced */ + isReceiptEditable?: boolean; /** The unit */ unit: Unit | undefined; @@ -245,7 +245,7 @@ function MoneyRequestConfirmationListFooter({ unit, onPDFLoadError, onPDFPassword, - isFromIOUStepConfirmationPage = false, + isReceiptEditable = false, }: MoneyRequestConfirmationListFooterProps) { const styles = useThemeStyles(); const {translate, toLocaleDigit} = useLocalize(); @@ -711,7 +711,7 @@ function MoneyRequestConfirmationListFooter({ } Navigation.navigate( - isFromIOUStepConfirmationPage && !isDistanceRequest && action === CONST.IOU.ACTION.CREATE + isReceiptEditable ? ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType) : ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID), ); @@ -736,7 +736,7 @@ function MoneyRequestConfirmationListFooter({ } Navigation.navigate( - isFromIOUStepConfirmationPage && !isDistanceRequest && action === CONST.IOU.ACTION.CREATE + isReceiptEditable ? ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType) : ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID), ); @@ -784,7 +784,7 @@ function MoneyRequestConfirmationListFooter({ action, iouType, reportID, - isFromIOUStepConfirmationPage, + isReceiptEditable, ], ); diff --git a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx index ec91ebacaee03..af75d64cbff29 100644 --- a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx +++ b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx @@ -939,7 +939,7 @@ function IOURequestStepConfirmation({ receiptFilename={receiptFilename} iouType={iouType} reportID={reportID} - shouldDisplayReceipt + shouldDisplayReceipt={!isMovingTransactionFromTrackExpense} isPolicyExpenseChat={isPolicyExpenseChat} policyID={getIOURequestPolicyID(transaction, report)} bankAccountRoute={getBankAccountRoute(report)} @@ -953,7 +953,7 @@ function IOURequestStepConfirmation({ shouldPlaySound={iouType === CONST.IOU.TYPE.PAY} isConfirmed={isConfirmed} isConfirming={isConfirming} - isFromIOUStepConfirmationPage + isReceiptEditable /> From 2d466000bb3238adacdd6c927b2866217d73b0a2 Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Thu, 27 Mar 2025 01:40:15 +0300 Subject: [PATCH 5/5] add requestType checks --- src/pages/iou/request/step/IOURequestStepConfirmation.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx index af75d64cbff29..f6f8018dc3246 100644 --- a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx +++ b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx @@ -939,7 +939,7 @@ function IOURequestStepConfirmation({ receiptFilename={receiptFilename} iouType={iouType} reportID={reportID} - shouldDisplayReceipt={!isMovingTransactionFromTrackExpense} + shouldDisplayReceipt={!isMovingTransactionFromTrackExpense && !isDistanceRequest && !isPerDiemRequest} isPolicyExpenseChat={isPolicyExpenseChat} policyID={getIOURequestPolicyID(transaction, report)} bankAccountRoute={getBankAccountRoute(report)}