Skip to content

Commit 9fed4d2

Browse files
luacmartinsOSBotify
authored andcommitted
Merge pull request #44372 from tsa321/fixDeleteExpenseInRHP
[CP Staging] Fix back navigation after delete expense request in search transcation pane RHP (cherry picked from commit 4cc548e)
1 parent b747ef9 commit 9fed4d2

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
@@ -288,12 +288,7 @@ function MoneyRequestHeader({report, parentReportAction, policy, shouldUseNarrow
288288
isVisible={isDeleteModalVisible}
289289
onConfirm={deleteTransaction}
290290
onCancel={() => setIsDeleteModalVisible(false)}
291-
onModalHide={() => {
292-
if (!navigateBackToAfterDelete.current) {
293-
return;
294-
}
295-
Navigation.goBack(navigateBackToAfterDelete.current);
296-
}}
291+
onModalHide={() => ReportUtils.navigateBackAfterDeleteTransaction(navigateBackToAfterDelete.current)}
297292
prompt={translate('iou.deleteConfirmation')}
298293
confirmText={translate('common.delete')}
299294
cancelText={translate('common.cancel')}

src/libs/Navigation/Navigation.ts

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

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

369+
function getTopMostCentralPaneRouteFromRootState() {
370+
return getTopmostCentralPaneRoute(navigationRef.getRootState() as State<RootStackParamList>);
371+
}
372+
368373
export default {
369374
setShouldPopAllStateOnUP,
370375
navigate,
@@ -386,6 +391,7 @@ export default {
386391
resetToHome,
387392
closeRHPFlow,
388393
setNavigationActionToMicrotaskQueue,
394+
getTopMostCentralPaneRouteFromRootState,
389395
};
390396

391397
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
*/
@@ -7252,6 +7265,7 @@ export {
72527265
canWriteInReport,
72537266
navigateToDetailsPage,
72547267
navigateToPrivateNotes,
7268+
navigateBackAfterDeleteTransaction,
72557269
parseReportRouteParams,
72567270
parseReportActionHtmlToText,
72577271
reportFieldsEnabled,

src/pages/ReportDetailsPage.tsx

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

src/pages/home/ReportScreen.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,8 @@ function ReportScreen({
519519
isClosedTopLevelPolicyRoom
520520
) {
521521
// 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.
522-
if (!isFocused) {
522+
// Prevent auto navigation for report in RHP
523+
if (!isFocused || isReportOpenInRHP) {
523524
return;
524525
}
525526
Navigation.dismissModal();
@@ -550,6 +551,7 @@ function ReportScreen({
550551

551552
fetchReportIfNeeded();
552553
ComposerActions.setShouldShowComposeInput(true);
554+
// eslint-disable-next-line react-hooks/exhaustive-deps
553555
}, [
554556
route,
555557
report,

0 commit comments

Comments
 (0)