diff --git a/src/ROUTES.ts b/src/ROUTES.ts index e4c93c0e366a5..4da52303a8eb8 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -1416,29 +1416,29 @@ const ROUTES = { getRoute: (iouType: IOUType, iouRequestType: IOURequestType) => `start/${iouType as string}/${iouRequestType as string}` as const, }, MONEY_REQUEST_CREATE_TAB_DISTANCE: { - route: 'distance/:backToReport?', + route: 'distance', getRoute: (action: IOUAction, iouType: IOUType, transactionID: string, reportID: string, backToReport?: string) => - `create/${iouType as string}/start/${transactionID}/${reportID}/distance/${backToReport ?? ''}` as const, + `create/${iouType as string}/start/${transactionID}/${reportID}${backToReport ? `/${backToReport}` : ''}/distance` as const, }, MONEY_REQUEST_CREATE_TAB_MANUAL: { - route: 'manual/:backToReport?', + route: 'manual', getRoute: (action: IOUAction, iouType: IOUType, transactionID: string, reportID: string, backToReport?: string) => - `${action as string}/${iouType as string}/start/${transactionID}/${reportID}/manual/${backToReport ?? ''}` as const, + `${action as string}/${iouType as string}/start/${transactionID}/${reportID}${backToReport ? `/${backToReport}` : ''}/manual` as const, }, MONEY_REQUEST_CREATE_TAB_SCAN: { - route: 'scan/:backToReport?', + route: 'scan', getRoute: (action: IOUAction, iouType: IOUType, transactionID: string, reportID: string, backToReport?: string) => - `create/${iouType as string}/start/${transactionID}/${reportID}/scan/${backToReport ?? ''}` as const, + `create/${iouType as string}/start/${transactionID}/${reportID}${backToReport ? `/${backToReport}` : ''}/scan` as const, }, MONEY_REQUEST_CREATE_TAB_PER_DIEM: { - route: 'per-diem/:backToReport?', + route: 'per-diem', getRoute: (action: IOUAction, iouType: IOUType, transactionID: string, reportID: string, backToReport?: string) => - `create/${iouType as string}/start/${transactionID}/${reportID}/per-diem/${backToReport ?? ''}` as const, + `create/${iouType as string}/start/${transactionID}/${reportID}${backToReport ? `/${backToReport}` : ''}/per-diem` as const, }, MONEY_REQUEST_CREATE_TAB_TIME: { - route: 'time/:backToReport?', + route: 'time', getRoute: (action: IOUAction, iouType: IOUType, transactionID: string, reportID: string, backToReport?: string) => - `create/${iouType as string}/start/${transactionID}/${reportID}/time/${backToReport ?? ''}` as const, + `create/${iouType as string}/start/${transactionID}/${reportID}${backToReport ? `/${backToReport}` : ''}/time` as const, }, MONEY_REQUEST_RECEIPT_VIEW: { diff --git a/src/libs/IOUUtils.ts b/src/libs/IOUUtils.ts index 226e7c4cd0712..cd7d7ba836f13 100644 --- a/src/libs/IOUUtils.ts +++ b/src/libs/IOUUtils.ts @@ -15,7 +15,7 @@ import {getReportTransactions, isSelfDM} from './ReportUtils'; import {endSpan, getSpan, startSpan} from './telemetry/activeSpans'; import {getCurrency, getTagArrayFromName} from './TransactionUtils'; -function navigateToStartMoneyRequestStep(requestType: IOURequestType, iouType: IOUType, transactionID: string, reportID: string, iouAction?: IOUAction): void { +function navigateToStartMoneyRequestStep(requestType: IOURequestType, iouType: IOUType, transactionID: string, reportID: string, iouAction?: IOUAction, backToReport?: string): void { if (iouAction === CONST.IOU.ACTION.CATEGORIZE || iouAction === CONST.IOU.ACTION.SUBMIT || iouAction === CONST.IOU.ACTION.SHARE) { Navigation.goBack(); return; @@ -23,28 +23,28 @@ function navigateToStartMoneyRequestStep(requestType: IOURequestType, iouType: I // If the participants were automatically added to the transaction, then the user needs taken back to the starting step switch (requestType) { case CONST.IOU.REQUEST_TYPE.DISTANCE: - Navigation.goBack(ROUTES.MONEY_REQUEST_CREATE_TAB_DISTANCE.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID), {compareParams: false}); + Navigation.goBack(ROUTES.MONEY_REQUEST_CREATE_TAB_DISTANCE.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID, backToReport), {compareParams: false}); break; case CONST.IOU.REQUEST_TYPE.DISTANCE_MAP: - Navigation.goBack(ROUTES.DISTANCE_REQUEST_CREATE_TAB_MAP.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID), {compareParams: false}); + Navigation.goBack(ROUTES.DISTANCE_REQUEST_CREATE_TAB_MAP.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID, backToReport), {compareParams: false}); break; case CONST.IOU.REQUEST_TYPE.DISTANCE_MANUAL: - Navigation.goBack(ROUTES.DISTANCE_REQUEST_CREATE_TAB_MANUAL.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID), {compareParams: false}); + Navigation.goBack(ROUTES.DISTANCE_REQUEST_CREATE_TAB_MANUAL.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID, backToReport), {compareParams: false}); break; case CONST.IOU.REQUEST_TYPE.DISTANCE_GPS: - Navigation.goBack(ROUTES.DISTANCE_REQUEST_CREATE_TAB_GPS.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID), {compareParams: false}); + Navigation.goBack(ROUTES.DISTANCE_REQUEST_CREATE_TAB_GPS.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID, backToReport), {compareParams: false}); break; case CONST.IOU.REQUEST_TYPE.DISTANCE_ODOMETER: - Navigation.goBack(ROUTES.DISTANCE_REQUEST_CREATE_TAB_ODOMETER.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID), {compareParams: false}); + Navigation.goBack(ROUTES.DISTANCE_REQUEST_CREATE_TAB_ODOMETER.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID, backToReport), {compareParams: false}); break; case CONST.IOU.REQUEST_TYPE.SCAN: - Navigation.goBack(ROUTES.MONEY_REQUEST_CREATE_TAB_SCAN.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID), {compareParams: false}); + Navigation.goBack(ROUTES.MONEY_REQUEST_CREATE_TAB_SCAN.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID, backToReport), {compareParams: false}); break; case CONST.IOU.REQUEST_TYPE.TIME: - Navigation.goBack(ROUTES.MONEY_REQUEST_CREATE_TAB_TIME.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID), {compareParams: false}); + Navigation.goBack(ROUTES.MONEY_REQUEST_CREATE_TAB_TIME.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID, backToReport), {compareParams: false}); break; default: - Navigation.goBack(ROUTES.MONEY_REQUEST_CREATE_TAB_MANUAL.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID), {compareParams: false}); + Navigation.goBack(ROUTES.MONEY_REQUEST_CREATE_TAB_MANUAL.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID, backToReport), {compareParams: false}); break; } } diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 6dd584f49c9f9..d9447e03d14d9 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -2134,6 +2134,7 @@ type MoneyRequestNavigatorParamList = { transactionID: string; reportID: string; reportActionID: string; + backToReport?: string; }; [SCREENS.MONEY_REQUEST.STEP_HOURS_EDIT]: { action: IOUAction; @@ -2141,6 +2142,7 @@ type MoneyRequestNavigatorParamList = { transactionID: string; reportID: string; reportActionID: string; + backToReport?: string; }; }; diff --git a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx index 0ad8cb1b2761c..9dc20bd10e816 100644 --- a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx +++ b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx @@ -523,7 +523,7 @@ function IOURequestStepConfirmation({ } // This has selected the participants from the beginning and the participant field shouldn't be editable. - navigateToStartMoneyRequestStep(requestType, iouType, initialTransactionID, reportID, action); + navigateToStartMoneyRequestStep(requestType, iouType, initialTransactionID, reportID, action, backToReport); }, [ action, isPerDiemRequest, @@ -541,6 +541,7 @@ function IOURequestStepConfirmation({ isMovingTransactionFromTrackExpense, participantsAutoAssignedFromRoute, backTo, + backToReport, ]); // When the component mounts, if there is a receipt, see if the image can be read from the disk. If not, redirect the user to the starting step of the flow. diff --git a/src/pages/iou/request/step/IOURequestStepHours.tsx b/src/pages/iou/request/step/IOURequestStepHours.tsx index 271e9e148104a..86250020db04e 100644 --- a/src/pages/iou/request/step/IOURequestStepHours.tsx +++ b/src/pages/iou/request/step/IOURequestStepHours.tsx @@ -40,7 +40,7 @@ type IOURequestStepHoursProps = WithWritableReportOrNotFoundProps< function IOURequestStepHours({ report, route: { - params: {iouType, reportID, transactionID = '-1', action, reportActionID}, + params: {iouType, reportID, transactionID = '-1', action, reportActionID, backToReport}, name: routeName, }, transaction, @@ -120,12 +120,12 @@ function IOURequestStepHours({ setTransactionReport(transactionID, {reportID: policyExpenseChat.reportID}, isTransactionDraft); setMoneyRequestParticipantsFromReport(transactionID, policyExpenseChat, accountID); - return Navigation.setNavigationActionToMicrotaskQueue(() => navigateToConfirmationPage(iouType, transactionID, policyExpenseChat.reportID, undefined)); + return Navigation.setNavigationActionToMicrotaskQueue(() => navigateToConfirmationPage(iouType, transactionID, policyExpenseChat.reportID, backToReport)); } setMoneyRequestParticipantsFromReport(transactionID, report, accountID); } - navigateToConfirmationPage(iouType, transactionID, reportID, undefined); + navigateToConfirmationPage(iouType, transactionID, reportID, backToReport); }; return (