11import { findFocusedRoute } from '@react-navigation/native' ;
2- import { useContext , useEffect , useState } from 'react' ;
3- import { Linking } from 'react-native' ;
2+ import { useContext , useState } from 'react' ;
43import type { AppProps } from './App' ;
54import CONST from './CONST' ;
65import { signInAfterTransitionFromOldDot } from './libs/actions/Session' ;
@@ -10,7 +9,10 @@ import ROUTES from './ROUTES';
109import SCREENS from './SCREENS' ;
1110import SplashScreenStateContext from './SplashScreenStateContext' ;
1211
12+ let isInitialNavigationHandled = false ;
13+
1314function handleHybridUrlNavigation ( url : Route ) {
15+ isInitialNavigationHandled = true ;
1416 const parsedUrl = Navigation . parseHybridAppUrl ( url ) ;
1517
1618 Navigation . isNavigationReady ( ) . then ( ( ) => {
@@ -29,22 +31,14 @@ function HybridAppHandler({url, hybridAppSettings}: AppProps) {
2931 const [ signInHandled , setSignInHandled ] = useState ( false ) ;
3032 const { setSplashScreenState} = useContext ( SplashScreenStateContext ) ;
3133
32- useEffect ( ( ) => {
33- const listener = Linking . addEventListener ( 'url' , ( state ) => {
34- handleHybridUrlNavigation ( state . url as Route ) ;
35- } ) ;
36-
37- return ( ) => {
38- listener . remove ( ) ;
39- } ;
40- } , [ ] ) ;
41-
4234 if ( ! url || ! hybridAppSettings || signInHandled ) {
4335 return null ;
4436 }
4537
4638 signInAfterTransitionFromOldDot ( hybridAppSettings ) . then ( ( ) => {
47- handleHybridUrlNavigation ( url ) ;
39+ if ( ! isInitialNavigationHandled ) {
40+ handleHybridUrlNavigation ( url ) ;
41+ }
4842 setSplashScreenState ( CONST . BOOT_SPLASH_STATE . READY_TO_BE_HIDDEN ) ;
4943 setSignInHandled ( true ) ;
5044 } ) ;
@@ -55,3 +49,4 @@ function HybridAppHandler({url, hybridAppSettings}: AppProps) {
5549HybridAppHandler . displayName = 'HybridAppHandler' ;
5650
5751export default HybridAppHandler ;
52+ export { handleHybridUrlNavigation }
0 commit comments