Skip to content

Commit 4cc548e

Browse files
authored
Merge pull request #44372 from tsa321/fixDeleteExpenseInRHP
[CP Staging] Fix back navigation after delete expense request in search transcation pane RHP
2 parents 2f688ad + 8dc0417 commit 4cc548e

File tree

6 files changed

+27
-21
lines changed

6 files changed

+27
-21
lines changed

src/components/MoneyReportHeader.tsx

+1-7
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import useThemeStyles from '@hooks/useThemeStyles';
99
import useWindowDimensions from '@hooks/useWindowDimensions';
1010
import * as CurrencyUtils from '@libs/CurrencyUtils';
1111
import * as HeaderUtils from '@libs/HeaderUtils';
12-
import Navigation from '@libs/Navigation/Navigation';
1312
import * as ReportActionsUtils from '@libs/ReportActionsUtils';
1413
import * as ReportUtils from '@libs/ReportUtils';
1514
import * as TransactionUtils from '@libs/TransactionUtils';
@@ -378,12 +377,7 @@ function MoneyReportHeader({policy, report: moneyRequestReport, transactionThrea
378377
isVisible={isDeleteRequestModalVisible}
379378
onConfirm={deleteTransaction}
380379
onCancel={() => setIsDeleteRequestModalVisible(false)}
381-
onModalHide={() => {
382-
if (!navigateBackToAfterDelete.current) {
383-
return;
384-
}
385-
Navigation.goBack(navigateBackToAfterDelete.current);
386-
}}
380+
onModalHide={() => ReportUtils.navigateBackAfterDeleteTransaction(navigateBackToAfterDelete.current)}
387381
prompt={translate('iou.deleteConfirmation')}
388382
confirmText={translate('common.delete')}
389383
cancelText={translate('common.cancel')}

src/components/MoneyRequestHeader.tsx

+1-6
Original file line numberDiff line numberDiff line change
@@ -293,12 +293,7 @@ function MoneyRequestHeader({report, parentReportAction, policy, shouldUseNarrow
293293
isVisible={isDeleteModalVisible}
294294
onConfirm={deleteTransaction}
295295
onCancel={() => setIsDeleteModalVisible(false)}
296-
onModalHide={() => {
297-
if (!navigateBackToAfterDelete.current) {
298-
return;
299-
}
300-
Navigation.goBack(navigateBackToAfterDelete.current);
301-
}}
296+
onModalHide={() => ReportUtils.navigateBackAfterDeleteTransaction(navigateBackToAfterDelete.current)}
302297
prompt={translate('iou.deleteConfirmation')}
303298
confirmText={translate('common.delete')}
304299
cancelText={translate('common.cancel')}

src/libs/Navigation/Navigation.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@ import type {EmptyObject} from '@src/types/utils/EmptyObject';
1717
import originalCloseRHPFlow from './closeRHPFlow';
1818
import originalDismissModal from './dismissModal';
1919
import originalDismissModalWithReport from './dismissModalWithReport';
20+
import getTopmostCentralPaneRoute from './getTopmostCentralPaneRoute';
2021
import originalGetTopmostReportActionId from './getTopmostReportActionID';
2122
import originalGetTopmostReportId from './getTopmostReportId';
2223
import linkingConfig from './linkingConfig';
2324
import linkTo from './linkTo';
2425
import navigationRef from './navigationRef';
2526
import setNavigationActionToMicrotaskQueue from './setNavigationActionToMicrotaskQueue';
2627
import switchPolicyID from './switchPolicyID';
27-
import type {NavigationStateRoute, State, StateOrRoute, SwitchPolicyIDParams} from './types';
28+
import type {NavigationStateRoute, RootStackParamList, State, StateOrRoute, SwitchPolicyIDParams} from './types';
2829

2930
let resolveNavigationIsReadyPromise: () => void;
3031
const navigationIsReadyPromise = new Promise<void>((resolve) => {
@@ -366,6 +367,10 @@ function navigateWithSwitchPolicyID(params: SwitchPolicyIDParams) {
366367
return switchPolicyID(navigationRef.current, params);
367368
}
368369

370+
function getTopMostCentralPaneRouteFromRootState() {
371+
return getTopmostCentralPaneRoute(navigationRef.getRootState() as State<RootStackParamList>);
372+
}
373+
369374
export default {
370375
setShouldPopAllStateOnUP,
371376
navigate,
@@ -387,6 +392,7 @@ export default {
387392
resetToHome,
388393
closeRHPFlow,
389394
setNavigationActionToMicrotaskQueue,
395+
getTopMostCentralPaneRouteFromRootState,
390396
};
391397

392398
export {navigationRef};

src/libs/ReportUtils.ts

+14
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import type {ParentNavigationSummaryParams, TranslationPaths} from '@src/languag
2020
import ONYXKEYS from '@src/ONYXKEYS';
2121
import type {Route} from '@src/ROUTES';
2222
import ROUTES from '@src/ROUTES';
23+
import SCREENS from '@src/SCREENS';
2324
import type {
2425
Beta,
2526
OnyxInputOrEntry,
@@ -3528,6 +3529,18 @@ function goBackToDetailsPage(report: OnyxEntry<Report>) {
35283529
Navigation.goBack(ROUTES.REPORT_SETTINGS.getRoute(report?.reportID ?? '-1'));
35293530
}
35303531

3532+
function navigateBackAfterDeleteTransaction(backRoute: Route | undefined) {
3533+
if (!backRoute) {
3534+
return;
3535+
}
3536+
const topmostCentralPaneRoute = Navigation.getTopMostCentralPaneRouteFromRootState();
3537+
if (topmostCentralPaneRoute?.name === SCREENS.SEARCH.CENTRAL_PANE) {
3538+
Navigation.dismissModal();
3539+
return;
3540+
}
3541+
Navigation.goBack(backRoute);
3542+
}
3543+
35313544
/**
35323545
* Go back to the previous page from the edit private page of a given report
35333546
*/
@@ -7264,6 +7277,7 @@ export {
72647277
canWriteInReport,
72657278
navigateToDetailsPage,
72667279
navigateToPrivateNotes,
7280+
navigateBackAfterDeleteTransaction,
72677281
parseReportRouteParams,
72687282
parseReportActionHtmlToText,
72697283
reportFieldsEnabled,

src/pages/ReportDetailsPage.tsx

+1-6
Original file line numberDiff line numberDiff line change
@@ -630,12 +630,7 @@ function ReportDetailsPage({policies, report, session, personalDetails}: ReportD
630630
isVisible={isDeleteModalVisible}
631631
onConfirm={deleteTransaction}
632632
onCancel={() => setIsDeleteModalVisible(false)}
633-
onModalHide={() => {
634-
if (!navigateBackToAfterDelete.current) {
635-
return;
636-
}
637-
Navigation.goBack(navigateBackToAfterDelete.current);
638-
}}
633+
onModalHide={() => ReportUtils.navigateBackAfterDeleteTransaction(navigateBackToAfterDelete.current)}
639634
prompt={caseID === CASES.DEFAULT ? translate('task.deleteConfirmation') : translate('iou.deleteConfirmation')}
640635
confirmText={translate('common.delete')}
641636
cancelText={translate('common.cancel')}

src/pages/home/ReportScreen.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,8 @@ function ReportScreen({
550550
isClosedTopLevelPolicyRoom
551551
) {
552552
// Early return if the report we're passing isn't in a focused state. We only want to navigate to Concierge if the user leaves the room from another device or gets removed from the room while the report is in a focused state.
553-
if (!isFocused) {
553+
// Prevent auto navigation for report in RHP
554+
if (!isFocused || isReportOpenInRHP) {
554555
return;
555556
}
556557
Navigation.dismissModal();
@@ -581,6 +582,7 @@ function ReportScreen({
581582

582583
fetchReportIfNeeded();
583584
ComposerActions.setShouldShowComposeInput(true);
585+
// eslint-disable-next-line react-hooks/exhaustive-deps
584586
}, [
585587
route,
586588
report,

0 commit comments

Comments
 (0)