File tree Expand file tree Collapse file tree 3 files changed +42
-3
lines changed Expand file tree Collapse file tree 3 files changed +42
-3
lines changed Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ import React, { useEffect } from 'react';
22import  {  StyleSheet  }  from  'react-native' ; 
33
44import  {  GestureHandlerRootView  }  from  'react-native-gesture-handler' ; 
5- import  {  NavigationContainer  }  from  '@react-navigation/native' ; 
5+ import  {  NavigationContainer ,   useNavigationContainerRef  }  from  '@react-navigation/native' ; 
66import  Instabug ,  { 
77  CrashReporting , 
88  InvocationEvent , 
@@ -20,6 +20,7 @@ import { QueryClient, QueryClientProvider } from 'react-query';
2020const  queryClient  =  new  QueryClient ( ) ; 
2121
2222export  const  App : React . FC  =  ( )  =>  { 
23+   const  navigationRef  =  useNavigationContainerRef ( ) ; 
2324  useEffect ( ( )  =>  { 
2425    Instabug . init ( { 
2526      token : 'deb1910a7342814af4e4c9210c786f35' , 
@@ -33,11 +34,15 @@ export const App: React.FC = () => {
3334    } ) ; 
3435  } ,  [ ] ) ; 
3536
37+   useEffect ( ( )  =>  { 
38+     Instabug . setNavigationListener ( navigationRef ) ; 
39+   } ,  [ navigationRef ] ) ; 
40+ 
3641  return  ( 
3742    < GestureHandlerRootView  style = { styles . root } > 
3843      < NativeBaseProvider  theme = { nativeBaseTheme } > 
3944        < QueryClientProvider  client = { queryClient } > 
40-           < NavigationContainer  onStateChange = { Instabug . onStateChange }   theme = { navigationTheme } > 
45+           < NavigationContainer  theme = { navigationTheme }   ref = { navigationRef } > 
4146            < RootTabNavigator  /> 
4247          </ NavigationContainer > 
4348        </ QueryClientProvider > 
Original file line number Diff line number Diff line change 11import  type  React  from  'react' ; 
22import  {  Platform ,  findNodeHandle ,  processColor  }  from  'react-native' ; 
33
4- import  type  {  NavigationState  as  NavigationStateV5  }  from  '@react-navigation/native' ; 
4+ import  type  { 
5+   NavigationContainerRefWithCurrent , 
6+   NavigationState  as  NavigationStateV5 , 
7+ }  from  '@react-navigation/native' ; 
58import  type  {  ComponentDidAppearEvent  }  from  'react-native-navigation' ; 
69import  type  {  NavigationAction ,  NavigationState  as  NavigationStateV4  }  from  'react-navigation' ; 
710
@@ -533,6 +536,19 @@ export const onStateChange = (state?: NavigationStateV5) => {
533536  } ,  1000 ) ; 
534537} ; 
535538
539+ /** 
540+  * Sets a listener for screen change 
541+  *  @param  navigationRef a refrence of a navigation container 
542+  * 
543+  */ 
544+ export  const  setNavigationListener  =  ( 
545+   navigationRef : NavigationContainerRefWithCurrent < ReactNavigation . RootParamList > , 
546+ )  =>  { 
547+   navigationRef . addListener ( 'state' ,  ( )  =>  { 
548+     onStateChange ( navigationRef . getRootState ( ) ) ; 
549+   } ) ; 
550+ } ; 
551+ 
536552export  const  reportScreenChange  =  ( screenName : string )  =>  { 
537553  NativeInstabug . reportScreenChange ( screenName ) ; 
538554} ; 
Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ import '../mocks/mockInstabugUtils';
22import  '../mocks/mockNetworkLogger' ; 
33
44import  {  Platform ,  findNodeHandle ,  processColor  }  from  'react-native' ; 
5+ import  type  {  NavigationContainerRefWithCurrent  }  from  '@react-navigation/native' ;  // Import the hook 
56
67import  {  mocked  }  from  'jest-mock' ; 
78import  waitForExpect  from  'wait-for-expect' ; 
@@ -236,6 +237,23 @@ describe('Instabug Module', () => {
236237    await  waitForExpect ( ( )  =>  expect ( NativeInstabug . reportScreenChange ) . toBeCalledTimes ( 2 ) ) ; 
237238  } ) ; 
238239
240+   it ( 'setNavigationListener should call the onStateChange on a screen change' ,  async  ( )  =>  { 
241+     const  mockNavigationContainerRef  =  { 
242+       current : null , 
243+       navigate : jest . fn ( ) , 
244+       reset : jest . fn ( ) , 
245+       goBack : jest . fn ( ) , 
246+       dispatch : jest . fn ( ) , 
247+       getRootState : jest . fn ( ) , 
248+       canGoBack : jest . fn ( ) , 
249+       addListener : jest . fn ( ) , 
250+       removeListener : jest . fn ( ) , 
251+     }  as  unknown  as  NavigationContainerRefWithCurrent < ReactNavigation . RootParamList > ; 
252+ 
253+     Instabug . setNavigationListener ( mockNavigationContainerRef ) ; 
254+     expect ( mockNavigationContainerRef . addListener ) . toBeCalledTimes ( 1 ) ; 
255+   } ) ; 
256+ 
239257  it ( 'should call the native method init' ,  ( )  =>  { 
240258    const  instabugConfig  =  { 
241259      token : 'some-token' , 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments