Skip to content

Commit 83aea42

Browse files
authored
Merge pull request Expensify#90401 from truph01/fix/90269
fix: App back button on Book travel page returns to ND instead of OD
2 parents 239a794 + 0f68716 commit 83aea42

50 files changed

Lines changed: 411 additions & 5 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/components/ScreenWrapper/index.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,14 @@ function ScreenWrapper({
183183
const [tryNewDot, tryNewDotMetadata] = useOnyx(ONYXKEYS.NVP_TRY_NEW_DOT);
184184
const isLoadingTryNewDot = isLoadingOnyxValue(tryNewDotMetadata);
185185
const shouldBlockSingleEntryOldAppExit = shouldHideOldAppRedirect(tryNewDot, isLoadingTryNewDot, CONFIG.IS_HYBRID_APP);
186+
const [initialActiveRouteWithoutParams, setInitialActiveRouteWithoutParams] = useState('');
187+
useEffect(() => {
188+
Navigation.isNavigationReady().then(() => setInitialActiveRouteWithoutParams(Navigation.getActiveRouteWithoutParams()));
189+
}, []);
190+
const initialURLWithoutParams = initialURL?.replaceAll(/\?.*/g, '');
191+
const doesInitialURLMatchActiveRoute = !!initialURLWithoutParams?.endsWith(Navigation.getActiveRouteWithoutParams() || initialActiveRouteWithoutParams);
186192

187-
usePreventRemove(isSingleNewDotEntry && !!initialURL?.endsWith(Navigation.getActiveRouteWithoutParams()) && !shouldBlockSingleEntryOldAppExit, () => {
193+
usePreventRemove(isSingleNewDotEntry && doesInitialURLMatchActiveRoute && !shouldBlockSingleEntryOldAppExit, () => {
188194
if (!CONFIG.IS_HYBRID_APP) {
189195
return;
190196
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* Jest manual mock for Navigation.
3+
*
4+
* Used automatically when a test calls `jest.mock('@libs/Navigation/Navigation')` without a factory.
5+
* Tests that need custom behavior can still pass a factory to override specific methods.
6+
*/
7+
export default {
8+
navigate: jest.fn(),
9+
goBack: jest.fn(),
10+
getActiveRoute: jest.fn(() => ''),
11+
getActiveRouteWithoutParams: jest.fn(() => ''),
12+
getReportRHPActiveRoute: jest.fn(() => ''),
13+
isNavigationReady: jest.fn(() => Promise.resolve()),
14+
dismissModal: jest.fn(),
15+
dismissModalWithReport: jest.fn(),
16+
setNavigationActionToMicrotaskQueue: jest.fn((callback: () => void) => callback?.()),
17+
setParams: jest.fn(),
18+
clearPreloadedRoutes: jest.fn(),
19+
isTopmostRouteModalScreen: jest.fn(() => false),
20+
};

tests/actions/ReportTest.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ jest.mock('@hooks/useCardFeedsForDisplay', () => jest.fn(() => ({defaultCardFeed
118118
jest.mock('@libs/Navigation/Navigation', () => ({
119119
navigate: jest.fn(),
120120
getActiveRoute: jest.fn().mockReturnValue(''),
121+
getActiveRouteWithoutParams: jest.fn(() => ''),
121122
dismissModalWithReport: jest.fn(),
122123
dismissModal: jest.fn(),
123124
dismissToSuperWideRHP: jest.fn(),

tests/navigation/LinkedActionNotFoundGuardTest.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ jest.mock('@libs/Navigation/Navigation', () => ({
1919
__esModule: true,
2020
default: {
2121
setParams: (...args: unknown[]) => mockSetParams(...args),
22+
getActiveRouteWithoutParams: jest.fn(() => ''),
2223
isNavigationReady: () => mockIsNavigationReady(),
2324
},
2425
}));

tests/perf-test/SearchRouter.perf-test.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ jest.mock('@src/libs/Navigation/Navigation', () => ({
4343
getTopmostReportId: jest.fn(),
4444
isNavigationReady: jest.fn(() => Promise.resolve()),
4545
isDisplayedInModal: jest.fn(() => false),
46+
getActiveRouteWithoutParams: jest.fn(() => ''),
4647
}));
4748

4849
jest.mock('@src/hooks/useRootNavigationState', () => ({

tests/perf-test/SidebarLinks.perf-test.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ jest.mock('../../src/libs/Navigation/Navigation', () => ({
1818
getTopmostReportActionId: jest.fn(),
1919
isNavigationReady: jest.fn(() => Promise.resolve()),
2020
isDisplayedInModal: jest.fn(() => false),
21+
getActiveRouteWithoutParams: jest.fn(() => ''),
2122
}));
2223
jest.mock('../../src/libs/Navigation/navigationRef', () => ({
2324
getState: () => ({

tests/perf-test/useAdvancedSearchFilters.perf-test.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ jest.mock('@src/libs/Navigation/Navigation', () => ({
3131
getTopmostReportId: jest.fn(),
3232
isNavigationReady: jest.fn(() => Promise.resolve()),
3333
isDisplayedInModal: jest.fn(() => false),
34+
getActiveRouteWithoutParams: jest.fn(() => ''),
3435
}));
3536

3637
jest.mock('@hooks/useExportedToFilterOptions', () => ({

tests/ui/AssignCardFeed.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ jest.mock('react-native-plaid-link-sdk', () => ({
8282

8383
jest.mock('@libs/Navigation/Navigation', () => ({
8484
navigate: jest.fn(),
85+
getActiveRouteWithoutParams: jest.fn(() => ''),
86+
isNavigationReady: jest.fn(() => Promise.resolve()),
8587
goBack: jest.fn(),
8688
setNavigationActionToMicrotaskQueue: jest.fn((callback: () => void) => callback?.()),
8789
dismissModal: jest.fn(),

tests/ui/AuthScreensInitHandlerTest.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ jest.mock('@libs/Navigation/Navigation', () => ({
4242
default: {
4343
isActiveRoute: jest.fn(() => false),
4444
navigate: jest.fn(),
45+
getActiveRouteWithoutParams: jest.fn(() => ''),
4546
isNavigationReady: jest.fn(() => Promise.resolve()),
4647
setNavigationActionToMicrotaskQueue: jest.fn(() => Promise.resolve()),
4748
},

tests/ui/ChronosTimerHeaderButton.test.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ jest.mock('@libs/Navigation/Navigation', () => ({
2424
navigate: (...args: unknown[]): void => {
2525
mockNavigate(...args);
2626
},
27+
getActiveRouteWithoutParams: jest.fn(() => ''),
28+
isNavigationReady: jest.fn(() => Promise.resolve()),
2729
isTopmostRouteModalScreen: () => false,
2830
}));
2931

0 commit comments

Comments
 (0)