| 
				
			 | 
			
			
				@@ -3,7 +3,6 @@ package com.reactnativenavigation.react; 
			 | 
		
	
		
			
			| 
				3
			 | 
			
				3
			 | 
			
			
				 import android.app.Activity; 
			 | 
		
	
		
			
			| 
				4
			 | 
			
				4
			 | 
			
			
				 import android.content.Intent; 
			 | 
		
	
		
			
			| 
				5
			 | 
			
				5
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				6
			 | 
			
				
			 | 
			
			
				-import com.facebook.react.LifecycleState; 
			 | 
		
	
		
			
			| 
				7
			 | 
			
				6
			 | 
			
			
				 import com.facebook.react.ReactInstanceManager; 
			 | 
		
	
		
			
			| 
				8
			 | 
			
				7
			 | 
			
			
				 import com.facebook.react.ReactPackage; 
			 | 
		
	
		
			
			| 
				9
			 | 
			
				8
			 | 
			
			
				 import com.facebook.react.bridge.ReactContext; 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -16,66 +15,54 @@ import com.reactnativenavigation.bridge.NavigationReactPackage; 
			 | 
		
	
		
			
			| 
				16
			 | 
			
				15
			 | 
			
			
				 import java.util.ArrayList; 
			 | 
		
	
		
			
			| 
				17
			 | 
			
				16
			 | 
			
			
				 import java.util.List; 
			 | 
		
	
		
			
			| 
				18
			 | 
			
				17
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				19
			 | 
			
				
			 | 
			
			
				-public class NavigationReactGateway implements ReactGateway, ReactInstanceManager.ReactInstanceEventListener { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				18
			 | 
			
			
				+public class NavigationReactGateway extends ReactGatewayHost implements ReactInstanceManager.ReactInstanceEventListener { 
			 | 
		
	
		
			
			| 
				20
			 | 
			
				19
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				21
			 | 
			
				20
			 | 
			
			
				     private OnJsDevReloadListener onJsDevReloadListener; 
			 | 
		
	
		
			
			| 
				22
			 | 
			
				
			 | 
			
			
				-    private ReactInstanceManager reactInstanceManager; 
			 | 
		
	
		
			
			| 
				23
			 | 
			
				21
			 | 
			
			
				     private NavigationReactEventEmitter reactEventEmitter; 
			 | 
		
	
		
			
			| 
				24
			 | 
			
				22
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				25
			 | 
			
				23
			 | 
			
			
				     public NavigationReactGateway() { 
			 | 
		
	
		
			
			| 
				26
			 | 
			
				
			 | 
			
			
				-        reactInstanceManager = createReactInstanceManager(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				24
			 | 
			
			
				+        super(NavigationApplication.instance); 
			 | 
		
	
		
			
			| 
				27
			 | 
			
				25
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				28
			 | 
			
				26
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				29
			 | 
			
				27
			 | 
			
			
				     @Override 
			 | 
		
	
		
			
			| 
				30
			 | 
			
				28
			 | 
			
			
				     public void startReactContextOnceInBackgroundAndExecuteJS() { 
			 | 
		
	
		
			
			| 
				31
			 | 
			
				
			 | 
			
			
				-        if (reactInstanceManager == null) { 
			 | 
		
	
		
			
			| 
				32
			 | 
			
				
			 | 
			
			
				-            reactInstanceManager = createReactInstanceManager(); 
			 | 
		
	
		
			
			| 
				33
			 | 
			
				
			 | 
			
			
				-        } 
			 | 
		
	
		
			
			| 
				34
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				35
			 | 
			
				
			 | 
			
			
				-        if (!reactInstanceManager.hasStartedCreatingInitialContext()) { 
			 | 
		
	
		
			
			| 
				36
			 | 
			
				
			 | 
			
			
				-            reactInstanceManager.createReactContextInBackground(); 
			 | 
		
	
		
			
			| 
				37
			 | 
			
				
			 | 
			
			
				-        } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				29
			 | 
			
			
				+        getReactInstanceManager().createReactContextInBackground(); 
			 | 
		
	
		
			
			| 
				38
			 | 
			
				30
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				39
			 | 
			
				31
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				40
			 | 
			
				32
			 | 
			
			
				     public boolean isInitialized() { 
			 | 
		
	
		
			
			| 
				41
			 | 
			
				
			 | 
			
			
				-        return reactInstanceManager != null && reactInstanceManager.getCurrentReactContext() != null; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				33
			 | 
			
			
				+        return hasInstance() && getReactInstanceManager().getCurrentReactContext() != null; 
			 | 
		
	
		
			
			| 
				42
			 | 
			
				34
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				43
			 | 
			
				35
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				44
			 | 
			
				36
			 | 
			
			
				     public ReactContext getReactContext() { 
			 | 
		
	
		
			
			| 
				45
			 | 
			
				
			 | 
			
			
				-        return reactInstanceManager.getCurrentReactContext(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				37
			 | 
			
			
				+        return getReactInstanceManager().getCurrentReactContext(); 
			 | 
		
	
		
			
			| 
				46
			 | 
			
				38
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				47
			 | 
			
				39
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				48
			 | 
			
				40
			 | 
			
			
				     public NavigationReactEventEmitter getReactEventEmitter() { 
			 | 
		
	
		
			
			| 
				49
			 | 
			
				41
			 | 
			
			
				         return reactEventEmitter; 
			 | 
		
	
		
			
			| 
				50
			 | 
			
				42
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				51
			 | 
			
				43
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				52
			 | 
			
				
			 | 
			
			
				-    public ReactInstanceManager getReactInstanceManager() { 
			 | 
		
	
		
			
			| 
				53
			 | 
			
				
			 | 
			
			
				-        return reactInstanceManager; 
			 | 
		
	
		
			
			| 
				54
			 | 
			
				
			 | 
			
			
				-    } 
			 | 
		
	
		
			
			| 
				55
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				56
			 | 
			
				44
			 | 
			
			
				     public void onBackPressed() { 
			 | 
		
	
		
			
			| 
				57
			 | 
			
				
			 | 
			
			
				-        reactInstanceManager.onBackPressed(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				45
			 | 
			
			
				+        getReactInstanceManager().onBackPressed(); 
			 | 
		
	
		
			
			| 
				58
			 | 
			
				46
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				59
			 | 
			
				47
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				60
			 | 
			
				48
			 | 
			
			
				     public void onDestroyApp() { 
			 | 
		
	
		
			
			| 
				61
			 | 
			
				
			 | 
			
			
				-        reactInstanceManager.onHostDestroy(); 
			 | 
		
	
		
			
			| 
				62
			 | 
			
				
			 | 
			
			
				-        reactInstanceManager.destroy(); 
			 | 
		
	
		
			
			| 
				63
			 | 
			
				
			 | 
			
			
				-        reactInstanceManager.removeReactInstanceEventListener(this); 
			 | 
		
	
		
			
			| 
				64
			 | 
			
				
			 | 
			
			
				-        reactInstanceManager = null; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				49
			 | 
			
			
				+        getReactInstanceManager().onHostDestroy(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				50
			 | 
			
			
				+        getReactInstanceManager().removeReactInstanceEventListener(this); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				51
			 | 
			
			
				+        clear(); 
			 | 
		
	
		
			
			| 
				65
			 | 
			
				52
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				66
			 | 
			
				53
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				67
			 | 
			
				54
			 | 
			
			
				     public void onPauseActivity() { 
			 | 
		
	
		
			
			| 
				68
			 | 
			
				
			 | 
			
			
				-        reactInstanceManager.onHostPause(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				55
			 | 
			
			
				+        getReactInstanceManager().onHostPause(); 
			 | 
		
	
		
			
			| 
				69
			 | 
			
				56
			 | 
			
			
				         onJsDevReloadListener = null; 
			 | 
		
	
		
			
			| 
				70
			 | 
			
				57
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				71
			 | 
			
				58
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				72
			 | 
			
				59
			 | 
			
			
				     public void onResumeActivity(Activity activity, DefaultHardwareBackBtnHandler defaultHardwareBackBtnHandler, OnJsDevReloadListener onJsDevReloadListener) { 
			 | 
		
	
		
			
			| 
				73
			 | 
			
				60
			 | 
			
			
				         this.onJsDevReloadListener = onJsDevReloadListener; 
			 | 
		
	
		
			
			| 
				74
			 | 
			
				
			 | 
			
			
				-        reactInstanceManager.onHostResume(activity, defaultHardwareBackBtnHandler); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				61
			 | 
			
			
				+        getReactInstanceManager().onHostResume(activity, defaultHardwareBackBtnHandler); 
			 | 
		
	
		
			
			| 
				75
			 | 
			
				62
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				76
			 | 
			
				63
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				77
			 | 
			
				64
			 | 
			
			
				     public void onActivityResult(int requestCode, int resultCode, Intent data) { 
			 | 
		
	
		
			
			| 
				78
			 | 
			
				
			 | 
			
			
				-        reactInstanceManager.onActivityResult(requestCode, resultCode, data); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				65
			 | 
			
			
				+        getReactInstanceManager().onActivityResult(requestCode, resultCode, data); 
			 | 
		
	
		
			
			| 
				79
			 | 
			
				66
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				80
			 | 
			
				67
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				81
			 | 
			
				68
			 | 
			
			
				     private void replaceJsDevReloadListener(ReactInstanceManager manager) { 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -88,29 +75,26 @@ public class NavigationReactGateway implements ReactGateway, ReactInstanceManage 
			 | 
		
	
		
			
			| 
				88
			 | 
			
				75
			 | 
			
			
				         }).replace(); 
			 | 
		
	
		
			
			| 
				89
			 | 
			
				76
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				90
			 | 
			
				77
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				91
			 | 
			
				
			 | 
			
			
				-    private ReactInstanceManager createReactInstanceManager() { 
			 | 
		
	
		
			
			| 
				92
			 | 
			
				
			 | 
			
			
				-        ReactInstanceManager.Builder builder = ReactInstanceManager.builder() 
			 | 
		
	
		
			
			| 
				93
			 | 
			
				
			 | 
			
			
				-                .setApplication(NavigationApplication.instance) 
			 | 
		
	
		
			
			| 
				94
			 | 
			
				
			 | 
			
			
				-                .setJSMainModuleName(NavigationApplication.instance.getJsEntryFileName()) 
			 | 
		
	
		
			
			| 
				95
			 | 
			
				
			 | 
			
			
				-                .setBundleAssetName(NavigationApplication.instance.getBundleAssetName()) 
			 | 
		
	
		
			
			| 
				96
			 | 
			
				
			 | 
			
			
				-                .setUseDeveloperSupport(NavigationApplication.instance.isDebug()) 
			 | 
		
	
		
			
			| 
				97
			 | 
			
				
			 | 
			
			
				-                .setInitialLifecycleState(LifecycleState.BEFORE_RESUME); 
			 | 
		
	
		
			
			| 
				98
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				99
			 | 
			
				
			 | 
			
			
				-        for (ReactPackage reactPackage : createReactPackages()) { 
			 | 
		
	
		
			
			| 
				100
			 | 
			
				
			 | 
			
			
				-            builder.addPackage(reactPackage); 
			 | 
		
	
		
			
			| 
				101
			 | 
			
				
			 | 
			
			
				-        } 
			 | 
		
	
		
			
			| 
				102
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				103
			 | 
			
				
			 | 
			
			
				-        ReactInstanceManager manager = builder.build(); 
			 | 
		
	
		
			
			| 
				104
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				
			 | 
			
				78
			 | 
			
			
				+    @Override 
			 | 
		
	
		
			
			| 
				
			 | 
			
				79
			 | 
			
			
				+    protected ReactInstanceManager createReactInstanceManager() { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				80
			 | 
			
			
				+        ReactInstanceManager manager = super.createReactInstanceManager(); 
			 | 
		
	
		
			
			| 
				105
			 | 
			
				81
			 | 
			
			
				         if (NavigationApplication.instance.isDebug()) { 
			 | 
		
	
		
			
			| 
				106
			 | 
			
				82
			 | 
			
			
				             replaceJsDevReloadListener(manager); 
			 | 
		
	
		
			
			| 
				107
			 | 
			
				83
			 | 
			
			
				         } 
			 | 
		
	
		
			
			| 
				108
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				109
			 | 
			
				84
			 | 
			
			
				         manager.addReactInstanceEventListener(this); 
			 | 
		
	
		
			
			| 
				110
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				111
			 | 
			
				85
			 | 
			
			
				         return manager; 
			 | 
		
	
		
			
			| 
				112
			 | 
			
				86
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				113
			 | 
			
				87
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				88
			 | 
			
			
				+    @Override 
			 | 
		
	
		
			
			| 
				
			 | 
			
				89
			 | 
			
			
				+    protected boolean getUseDeveloperSupport() { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				90
			 | 
			
			
				+        return NavigationApplication.instance.isDebug(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				91
			 | 
			
			
				+    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				92
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				93
			 | 
			
			
				+    @Override 
			 | 
		
	
		
			
			| 
				
			 | 
			
				94
			 | 
			
			
				+    protected List<ReactPackage> getPackages() { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				95
			 | 
			
			
				+        return createReactPackages(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				96
			 | 
			
			
				+    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				97
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				114
			 | 
			
				98
			 | 
			
			
				     private List<ReactPackage> createReactPackages() { 
			 | 
		
	
		
			
			| 
				115
			 | 
			
				99
			 | 
			
			
				         List<ReactPackage> list = new ArrayList<>(); 
			 | 
		
	
		
			
			| 
				116
			 | 
			
				100
			 | 
			
			
				         list.add(new MainReactPackage()); 
			 |