Parcourir la source

Move eventEmitter to NavigationReactInstance

Guy Carmeli il y a 8 ans
Parent
révision
fde3a31f40

+ 0
- 15
android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java Voir le fichier

@@ -5,9 +5,7 @@ import android.os.Handler;
5 5
 import android.support.annotation.NonNull;
6 6
 
7 7
 import com.facebook.react.ReactPackage;
8
-import com.facebook.react.bridge.ReactContext;
9 8
 import com.facebook.react.shell.MainReactPackage;
10
-import com.reactnativenavigation.bridge.NavigationReactEventEmitter;
11 9
 import com.reactnativenavigation.bridge.NavigationReactPackage;
12 10
 import com.reactnativenavigation.react.NavigationReactInstance;
13 11
 
@@ -18,7 +16,6 @@ public abstract class NavigationApplication extends Application {
18 16
 
19 17
     public static NavigationApplication instance;
20 18
     private NavigationReactInstance navigationReactInstance;
21
-    private NavigationReactEventEmitter reactEventEmitter;
22 19
     private Handler handler;
23 20
 
24 21
     @Override
@@ -30,18 +27,6 @@ public abstract class NavigationApplication extends Application {
30 27
         navigationReactInstance.startReactContextOnceInBackgroundAndExecuteJS();
31 28
     }
32 29
 
33
-    public NavigationReactEventEmitter getReactEventEmitter() {
34
-        if (reactEventEmitter == null) {
35
-            reactEventEmitter = new NavigationReactEventEmitter(getCurrentReactContext());
36
-        }
37
-
38
-        return reactEventEmitter;
39
-    }
40
-
41
-    private ReactContext getCurrentReactContext() {
42
-        return navigationReactInstance.getReactInstanceManager().getCurrentReactContext();
43
-    }
44
-
45 30
     public Handler getMainHandler() {
46 31
         return handler;
47 32
     }

+ 12
- 2
android/app/src/main/java/com/reactnativenavigation/react/NavigationReactInstance.java Voir le fichier

@@ -7,11 +7,12 @@ import com.facebook.react.ReactInstanceManager;
7 7
 import com.facebook.react.ReactPackage;
8 8
 import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
9 9
 import com.reactnativenavigation.NavigationApplication;
10
+import com.reactnativenavigation.bridge.NavigationReactEventEmitter;
10 11
 import com.reactnativenavigation.controllers.NavigationActivity;
11 12
 
12 13
 public class NavigationReactInstance {
13
-
14 14
     private final ReactInstanceManager reactInstanceManager;
15
+    private NavigationReactEventEmitter reactEventEmitter;
15 16
     private OnJsDevReloadListener onJsDevReloadListener;
16 17
 
17 18
     public interface OnJsDevReloadListener {
@@ -50,7 +51,8 @@ public class NavigationReactInstance {
50 51
     }
51 52
 
52 53
     public void onPause() {
53
-        this.onJsDevReloadListener = null;
54
+        onJsDevReloadListener = null;
55
+        reactEventEmitter = null;
54 56
         reactInstanceManager.onHostPause();
55 57
     }
56 58
 
@@ -82,4 +84,12 @@ public class NavigationReactInstance {
82 84
 
83 85
         return builder.build();
84 86
     }
87
+
88
+    public NavigationReactEventEmitter getReactEventEmitter() {
89
+        if (reactEventEmitter == null) {
90
+            reactEventEmitter = new NavigationReactEventEmitter(reactInstanceManager.getCurrentReactContext());
91
+        }
92
+
93
+        return reactEventEmitter;
94
+    }
85 95
 }

+ 5
- 1
android/app/src/main/java/com/reactnativenavigation/views/TitleBarButton.java Voir le fichier

@@ -93,7 +93,11 @@ public class TitleBarButton implements MenuItem.OnMenuItemClickListener {
93 93
 
94 94
     @Override
95 95
     public boolean onMenuItemClick(MenuItem item) {
96
-        NavigationApplication.instance.getReactEventEmitter().sendEvent(buttonParams.eventId, navigatorEventId);
96
+        NavigationApplication.
97
+                instance.
98
+                getNavigationReactInstance().
99
+                getReactEventEmitter().
100
+                sendEvent(buttonParams.eventId, navigatorEventId);
97 101
         return true;
98 102
     }
99 103
 }