From af19ead448d3eeec47575ac437aee89f6af5b2df Mon Sep 17 00:00:00 2001 From: Nicholas Penree Date: Fri, 14 Oct 2016 10:51:37 -0400 Subject: [PATCH 1/5] Updates for RN 0.35 --- .../main/java/co/apptailor/Worker/WorkerModule.java | 4 ++-- .../apptailor/Worker/core/ReactContextBuilder.java | 12 ++++++------ .../apptailor/Worker/core/UIManagerStubModule.java | 2 ++ package.json | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/android/src/main/java/co/apptailor/Worker/WorkerModule.java b/android/src/main/java/co/apptailor/Worker/WorkerModule.java index fa1bb40..41fd7a4 100644 --- a/android/src/main/java/co/apptailor/Worker/WorkerModule.java +++ b/android/src/main/java/co/apptailor/Worker/WorkerModule.java @@ -7,7 +7,7 @@ import com.facebook.react.ReactApplication; import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactPackage; -import com.facebook.react.bridge.JSBundleLoader; +import com.facebook.react.cxxbridge.JSBundleLoader; import com.facebook.react.bridge.LifecycleEventListener; import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; @@ -177,7 +177,7 @@ private JSBundleLoader createDevBundleLoader(String jsFileName, String jsFileSlu private JSBundleLoader createReleaseBundleLoader(String jsFileName, String jsFileSlug) { Log.d(TAG, "createReleaseBundleLoader - reading file from assets"); - return JSBundleLoader.createFileLoader(getReactApplicationContext(), "assets://workers/" + jsFileSlug + ".bundle"); + return JSBundleLoader.createFileLoader("assets://workers/" + jsFileSlug + ".bundle"); } private ReactInstanceManager getReactInstanceManager() { diff --git a/android/src/main/java/co/apptailor/Worker/core/ReactContextBuilder.java b/android/src/main/java/co/apptailor/Worker/core/ReactContextBuilder.java index a06b6ca..e8f3bfa 100644 --- a/android/src/main/java/co/apptailor/Worker/core/ReactContextBuilder.java +++ b/android/src/main/java/co/apptailor/Worker/core/ReactContextBuilder.java @@ -4,15 +4,15 @@ import com.facebook.react.ReactPackage; import com.facebook.react.bridge.CatalystInstance; -import com.facebook.react.bridge.CatalystInstanceImpl; -import com.facebook.react.bridge.JSBundleLoader; -import com.facebook.react.bridge.JSCJavaScriptExecutor; -import com.facebook.react.bridge.JavaScriptExecutor; +import com.facebook.react.cxxbridge.CatalystInstanceImpl; +import com.facebook.react.cxxbridge.JSBundleLoader; +import com.facebook.react.cxxbridge.JSCJavaScriptExecutor; +import com.facebook.react.cxxbridge.JavaScriptExecutor; import com.facebook.react.bridge.JavaScriptModule; import com.facebook.react.bridge.JavaScriptModuleRegistry; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.NativeModuleCallExceptionHandler; -import com.facebook.react.bridge.NativeModuleRegistry; +import com.facebook.react.cxxbridge.NativeModuleRegistry; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.WritableNativeMap; import com.facebook.react.bridge.queue.ReactQueueConfigurationSpec; @@ -50,7 +50,7 @@ public ReactContextBuilder setReactPackages(ArrayList reactPackage } public ReactApplicationContext build() throws Exception { - JavaScriptExecutor jsExecutor = new JSCJavaScriptExecutor.Factory().create(new WritableNativeMap()); + JavaScriptExecutor jsExecutor = new JSCJavaScriptExecutor.Factory(new WritableNativeMap()).create(); // fresh new react context final ReactApplicationContext reactContext = new ReactApplicationContext(parentContext); diff --git a/android/src/main/java/co/apptailor/Worker/core/UIManagerStubModule.java b/android/src/main/java/co/apptailor/Worker/core/UIManagerStubModule.java index cb12d8d..de52032 100644 --- a/android/src/main/java/co/apptailor/Worker/core/UIManagerStubModule.java +++ b/android/src/main/java/co/apptailor/Worker/core/UIManagerStubModule.java @@ -2,6 +2,7 @@ import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReactMethod; public class UIManagerStubModule extends ReactContextBaseJavaModule { @@ -9,6 +10,7 @@ public UIManagerStubModule(ReactApplicationContext reactContext) { super(reactContext); } + @ReactMethod @Override public String getName() { return "UIManager"; diff --git a/package.json b/package.json index e6455a5..96d25d7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-workers", - "version": "0.3.1", + "version": "0.4.0", "description": "react native web workers", "main": "index.js", "scripts": { From 1dad97c4353414323a20f426428995856c4f2d13 Mon Sep 17 00:00:00 2001 From: Nicholas Penree Date: Wed, 19 Oct 2016 13:42:41 -0400 Subject: [PATCH 2/5] Fix release bundle loader --- android/src/main/java/co/apptailor/Worker/WorkerModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/co/apptailor/Worker/WorkerModule.java b/android/src/main/java/co/apptailor/Worker/WorkerModule.java index 41fd7a4..41c2267 100644 --- a/android/src/main/java/co/apptailor/Worker/WorkerModule.java +++ b/android/src/main/java/co/apptailor/Worker/WorkerModule.java @@ -177,7 +177,7 @@ private JSBundleLoader createDevBundleLoader(String jsFileName, String jsFileSlu private JSBundleLoader createReleaseBundleLoader(String jsFileName, String jsFileSlug) { Log.d(TAG, "createReleaseBundleLoader - reading file from assets"); - return JSBundleLoader.createFileLoader("assets://workers/" + jsFileSlug + ".bundle"); + return JSBundleLoader.createAssetLoader(getReactApplicationContext(), "assets://workers/" + jsFileSlug + ".bundle"); } private ReactInstanceManager getReactInstanceManager() { From 7dfd7f27f05148540c5129bddd50a7263312e9f3 Mon Sep 17 00:00:00 2001 From: Nicholas Penree Date: Wed, 19 Oct 2016 16:18:16 -0400 Subject: [PATCH 3/5] Guard against using reactContext when it is null --- .../src/main/java/co/apptailor/Worker/JSWorker.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/android/src/main/java/co/apptailor/Worker/JSWorker.java b/android/src/main/java/co/apptailor/Worker/JSWorker.java index 2bb7546..b4e10d0 100644 --- a/android/src/main/java/co/apptailor/Worker/JSWorker.java +++ b/android/src/main/java/co/apptailor/Worker/JSWorker.java @@ -39,15 +39,27 @@ public void runFromContext(ReactApplicationContext context, ReactContextBuilder } public void postMessage(String message) { + if (reactContext == null) { + return; + } + reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) .emit("WorkerMessage", message); } public void onHostResume() { + if (reactContext == null) { + return; + } + reactContext.onHostResume(null); } public void onHostPause() { + if (reactContext == null) { + return; + } + reactContext.onHostPause(); } From d7cc15050b26e5095402351f1a64def48265c95d Mon Sep 17 00:00:00 2001 From: Nicholas Penree Date: Sun, 23 Oct 2016 16:03:05 -0400 Subject: [PATCH 4/5] Stop worker so it is removed from workers map once terminated --- android/src/main/java/co/apptailor/Worker/WorkerModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/co/apptailor/Worker/WorkerModule.java b/android/src/main/java/co/apptailor/Worker/WorkerModule.java index 41c2267..15589f0 100644 --- a/android/src/main/java/co/apptailor/Worker/WorkerModule.java +++ b/android/src/main/java/co/apptailor/Worker/WorkerModule.java @@ -149,7 +149,7 @@ public void onHostDestroy() { @Override public void run() { for (int workerId : workers.keySet()) { - workers.get(workerId).terminate(); + stopWorker(workerId); } } }); From 41795eba6d761e678fc56fb4ef5bd216b8433323 Mon Sep 17 00:00:00 2001 From: Nicholas Penree Date: Sun, 23 Oct 2016 16:10:22 -0400 Subject: [PATCH 5/5] Clean up context checks --- .../java/co/apptailor/Worker/JSWorker.java | 30 +++++++------------ 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/android/src/main/java/co/apptailor/Worker/JSWorker.java b/android/src/main/java/co/apptailor/Worker/JSWorker.java index b4e10d0..5c7074f 100644 --- a/android/src/main/java/co/apptailor/Worker/JSWorker.java +++ b/android/src/main/java/co/apptailor/Worker/JSWorker.java @@ -39,37 +39,29 @@ public void runFromContext(ReactApplicationContext context, ReactContextBuilder } public void postMessage(String message) { - if (reactContext == null) { - return; - } - - reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) + if (reactContext != null) { + reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) .emit("WorkerMessage", message); + } } public void onHostResume() { - if (reactContext == null) { - return; + if (reactContext != null) { + reactContext.onHostResume(null); } - - reactContext.onHostResume(null); } public void onHostPause() { - if (reactContext == null) { - return; + if (reactContext != null) { + reactContext.onHostPause(); } - - reactContext.onHostPause(); } public void terminate() { - if (reactContext == null) { - return; + if (reactContext != null) { + reactContext.onHostPause(); + reactContext.destroy(); + reactContext = null; } - - reactContext.onHostPause(); - reactContext.destroy(); - reactContext = null; } }