From 4598f405d3332832dc58e397374165fe12f5d1ac Mon Sep 17 00:00:00 2001 From: Bernhard Owen Josephus Date: Wed, 4 Jun 2025 16:48:43 +0800 Subject: [PATCH 1/2] simply closes the money request page when creating it from report rhp --- src/libs/Navigation/Navigation.ts | 5 +++++ src/libs/actions/IOU.ts | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/libs/Navigation/Navigation.ts b/src/libs/Navigation/Navigation.ts index c812cd179e50..d3f8cfe47f5e 100644 --- a/src/libs/Navigation/Navigation.ts +++ b/src/libs/Navigation/Navigation.ts @@ -589,6 +589,10 @@ function popRootToTop() { navigationRef.current?.dispatch({...StackActions.popToTop(), target: rootState.key}); } +function pop(target: string) { + navigationRef.current?.dispatch({...StackActions.pop(), target}); +} + function removeScreenFromNavigationState(screen: string) { isNavigationReady().then(() => { navigationRef.current?.dispatch((state) => { @@ -652,6 +656,7 @@ export default { setNavigationActionToMicrotaskQueue, popToTop, popRootToTop, + pop, removeScreenFromNavigationState, removeScreenByKey, getReportRouteByID, diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index fb3742af7333..e7cbb500088d 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -56,8 +56,9 @@ import isFileUploadable from '@libs/isFileUploadable'; import {formatPhoneNumber} from '@libs/LocalePhoneNumber'; import * as Localize from '@libs/Localize'; import Log from '@libs/Log'; +import isReportOpenInRHP from '@libs/Navigation/helpers/isReportOpenInRHP'; import isSearchTopmostFullScreenRoute from '@libs/Navigation/helpers/isSearchTopmostFullScreenRoute'; -import Navigation from '@libs/Navigation/Navigation'; +import Navigation, {navigationRef} from '@libs/Navigation/Navigation'; import {buildNextStep} from '@libs/NextStepUtils'; import * as NumberUtils from '@libs/NumberUtils'; import {getManagerMcTestParticipant, getPersonalDetailsForAccountIDs} from '@libs/OptionsListUtils'; @@ -836,9 +837,18 @@ Onyx.connect({ /** * @private * After finishing the action in RHP from the Inbox tab, besides dismissing the modal, we should open the report. + * If the action is done from the report RHP, then we just want to dismiss the money request flow screens. * It is a helper function used only in this file. */ function dismissModalAndOpenReportInInboxTab(reportID?: string) { + const rootState = navigationRef.getRootState(); + if (isReportOpenInRHP(rootState)) { + const rhpKey = rootState.routes.at(-1)?.state?.key; + if (rhpKey) { + Navigation.pop(rhpKey); + return; + } + } if (isSearchTopmostFullScreenRoute() || !reportID) { Navigation.dismissModal(); return; From 01ced97c8b05da18e56693ad0cbfd3869789f75d Mon Sep 17 00:00:00 2001 From: Bernhard Owen Josephus Date: Wed, 4 Jun 2025 19:31:30 +0800 Subject: [PATCH 2/2] fix test --- tests/actions/IOUTest.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/tests/actions/IOUTest.ts b/tests/actions/IOUTest.ts index 109611e70a11..b2fd806ef50d 100644 --- a/tests/actions/IOUTest.ts +++ b/tests/actions/IOUTest.ts @@ -97,12 +97,9 @@ jest.mock('@src/libs/Navigation/Navigation', () => ({ getReportRouteByID: jest.fn(), getActiveRouteWithoutParams: jest.fn(), getActiveRoute: jest.fn(), -})); - -jest.mock('@src/libs/Navigation/navigationRef', () => ({ - getRootState: () => ({ - routes: [], - }), + navigationRef: { + getRootState: jest.fn(), + }, })); jest.mock('@react-navigation/native');