Skip to content

Commit c8cf586

Browse files
committed
remove unnecessary params and navigation
cleanup the code
1 parent 9e6e464 commit c8cf586

5 files changed

Lines changed: 35 additions & 42 deletions

File tree

modules/hybrid-app/src/index.native.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import {Linking} from 'react-native';
2-
import type { Route } from '@src/ROUTES';
3-
import {handleHybridUrlNavigation} from '@src/HybridAppHandler';
41
import ReactNativeHybridApp from './NativeReactNativeHybridApp';
52
import type HybridAppModuleType from './types';
63

@@ -25,8 +22,4 @@ const HybridAppModule: HybridAppModuleType = {
2522
},
2623
};
2724

28-
Linking.addEventListener('url', (state) => {
29-
handleHybridUrlNavigation(state.url as Route);
30-
});
31-
3225
export default HybridAppModule;

src/App.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import OnyxUpdateManager from './libs/actions/OnyxUpdateManager';
4444
import {ReportAttachmentsProvider} from './pages/home/report/ReportAttachmentsContext';
4545
import type {Route} from './ROUTES';
4646
import './setup/backgroundTask';
47+
import './setup/hybridApp';
4748
import {SplashScreenStateContextProvider} from './SplashScreenStateContext';
4849

4950
/**
@@ -114,12 +115,7 @@ function App({url, hybridAppSettings}: AppProps) {
114115
>
115116
<CustomStatusBarAndBackground />
116117
<ErrorBoundary errorMessage="NewExpensify crash caught by error boundary">
117-
{CONFIG.IS_HYBRID_APP && (
118-
<HybridAppHandler
119-
url={url}
120-
hybridAppSettings={hybridAppSettings}
121-
/>
122-
)}
118+
<HybridAppHandler hybridAppSettings={hybridAppSettings} />
123119
<ColorSchemeWrapper>
124120
<Expensify />
125121
</ColorSchemeWrapper>

src/HybridAppHandler.tsx

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,19 @@
1-
import {findFocusedRoute} from '@react-navigation/native';
21
import {useContext, useState} from 'react';
32
import type {AppProps} from './App';
3+
import CONFIG from './CONFIG';
44
import CONST from './CONST';
55
import {signInAfterTransitionFromOldDot} from './libs/actions/Session';
6-
import Navigation, {navigationRef} from './libs/Navigation/Navigation';
7-
import type {Route} from './ROUTES';
8-
import ROUTES from './ROUTES';
9-
import SCREENS from './SCREENS';
106
import SplashScreenStateContext from './SplashScreenStateContext';
117

12-
let isInitialNavigationHandled = false;
13-
14-
function handleHybridUrlNavigation(url: Route) {
15-
isInitialNavigationHandled = true;
16-
const parsedUrl = Navigation.parseHybridAppUrl(url);
17-
18-
Navigation.isNavigationReady().then(() => {
19-
if (parsedUrl.startsWith(`/${ROUTES.SHARE_ROOT}`)) {
20-
const focusRoute = findFocusedRoute(navigationRef.getRootState());
21-
if (focusRoute?.name === SCREENS.SHARE.SHARE_DETAILS || focusRoute?.name === SCREENS.SHARE.SUBMIT_DETAILS) {
22-
Navigation.goBack(ROUTES.SHARE_ROOT);
23-
return;
24-
}
25-
}
26-
Navigation.navigate(parsedUrl);
27-
});
28-
}
29-
30-
function HybridAppHandler({url, hybridAppSettings}: AppProps) {
8+
function HybridAppHandler({hybridAppSettings}: AppProps) {
319
const [signInHandled, setSignInHandled] = useState(false);
3210
const {setSplashScreenState} = useContext(SplashScreenStateContext);
3311

34-
if (!url || !hybridAppSettings || signInHandled) {
12+
if (!CONFIG.IS_HYBRID_APP || !hybridAppSettings || signInHandled) {
3513
return null;
3614
}
3715

3816
signInAfterTransitionFromOldDot(hybridAppSettings).then(() => {
39-
if (!isInitialNavigationHandled) {
40-
handleHybridUrlNavigation(url);
41-
}
4217
setSplashScreenState(CONST.BOOT_SPLASH_STATE.READY_TO_BE_HIDDEN);
4318
setSignInHandled(true);
4419
});
@@ -49,4 +24,3 @@ function HybridAppHandler({url, hybridAppSettings}: AppProps) {
4924
HybridAppHandler.displayName = 'HybridAppHandler';
5025

5126
export default HybridAppHandler;
52-
export {handleHybridUrlNavigation}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import {findFocusedRoute} from '@react-navigation/native';
2+
import {Linking} from 'react-native';
3+
import Navigation, {navigationRef} from '@navigation/Navigation';
4+
import CONFIG from '@src/CONFIG';
5+
import type {Route} from '@src/ROUTES';
6+
import ROUTES from '@src/ROUTES';
7+
import SCREENS from '@src/SCREENS';
8+
9+
if (CONFIG.IS_HYBRID_APP) {
10+
Linking.addEventListener('url', (state) => {
11+
handleHybridUrlNavigation(state.url as Route);
12+
});
13+
}
14+
15+
function handleHybridUrlNavigation(url: Route) {
16+
const parsedUrl = Navigation.parseHybridAppUrl(url);
17+
18+
Navigation.isNavigationReady().then(() => {
19+
if (parsedUrl.startsWith(`/${ROUTES.SHARE_ROOT}`)) {
20+
const focusRoute = findFocusedRoute(navigationRef.getRootState());
21+
if (focusRoute?.name === SCREENS.SHARE.SHARE_DETAILS || focusRoute?.name === SCREENS.SHARE.SUBMIT_DETAILS) {
22+
Navigation.goBack(ROUTES.SHARE_ROOT);
23+
return;
24+
}
25+
}
26+
Navigation.navigate(parsedUrl);
27+
});
28+
}

src/setup/hybridApp/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// This file is intentionally empty as Hybrid App is a native mobile platforms feature
2+
// See `index.native.ts` for the native implementation.

0 commit comments

Comments
 (0)