Skip to content

Commit 4923a09

Browse files
Adding show/hide Native Implementation of Dev Loading Module (#35746)
Summary: Pull Request resolved: #35746 Changelog: [Android][Added] - For supporting Dev Loading View across multiple platforms, adding native implementation for showMessage() & hide() of Dev Loading Module Reviewed By: rshest Differential Revision: D42286425 fbshipit-source-id: b2aa160583bc86965501f3ed3027152bb0b47af0
1 parent 57f1196 commit 4923a09

File tree

4 files changed

+42
-3
lines changed

4 files changed

+42
-3
lines changed

ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,10 @@ public JSExceptionHandler getExceptionHandler() {
444444
return mExceptionHandlerWrapper;
445445
}
446446

447+
public JSExceptionHandler getJSExceptionHandler() {
448+
return mJSExceptionHandler;
449+
}
450+
447451
public boolean hasCurrentActivity() {
448452
return mCurrentActivity != null && mCurrentActivity.get() != null;
449453
}

ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@
6565
*/
6666
public final class BridgeDevSupportManager extends DevSupportManagerBase {
6767
private boolean mIsSamplingProfilerEnabled = false;
68+
private ReactInstanceDevHelper mReactInstanceManagerHelper;
69+
private @Nullable DevLoadingViewManager mDevLoadingViewManager;
6870

6971
public BridgeDevSupportManager(
7072
Context applicationContext,
@@ -89,6 +91,9 @@ public BridgeDevSupportManager(
8991
surfaceDelegateFactory,
9092
devLoadingViewManager);
9193

94+
mReactInstanceManagerHelper = reactInstanceManagerHelper;
95+
mDevLoadingViewManager = devLoadingViewManager;
96+
9297
if (getDevSettings().isStartSamplingProfilerOnInit()) {
9398
// Only start the profiler. If its already running, there is an error
9499
if (!mIsSamplingProfilerEnabled) {
@@ -128,6 +133,14 @@ public void onOptionSelected() {
128133
}
129134
}
130135

136+
public DevLoadingViewManager getDevLoadingViewManager() {
137+
return mDevLoadingViewManager;
138+
}
139+
140+
public ReactInstanceDevHelper getReactInstanceManagerHelper() {
141+
return mReactInstanceManagerHelper;
142+
}
143+
131144
@Override
132145
protected String getUniqueTag() {
133146
return "Bridge";

ReactAndroid/src/main/java/com/facebook/react/modules/devloading/BUCK

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,18 @@ rn_android_library(
88
"pfh:ReactNative_CommonInfrastructurePlaceholder",
99
],
1010
language = "JAVA",
11+
provided_deps = [
12+
react_native_dep("third-party/android/androidx:annotation"),
13+
],
1114
visibility = [
1215
"PUBLIC",
1316
],
1417
deps = [
1518
react_native_dep("third-party/java/infer-annotations:infer-annotations"),
1619
react_native_dep("third-party/java/jsr-305:jsr-305"),
1720
react_native_target("java/com/facebook/react/bridge:bridge"),
21+
react_native_target("java/com/facebook/react/devsupport:devsupport"),
22+
react_native_target("java/com/facebook/react/devsupport:interfaces"),
1823
react_native_target("java/com/facebook/react/common:common"),
1924
react_native_target("java/com/facebook/react/module/annotations:annotations"),
2025
],

ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,36 @@
77

88
package com.facebook.react.modules.devloading;
99

10-
import android.util.Log;
10+
import androidx.annotation.Nullable;
1111
import com.facebook.fbreact.specs.NativeDevLoadingViewSpec;
12+
import com.facebook.react.bridge.JSExceptionHandler;
1213
import com.facebook.react.bridge.NativeModule;
1314
import com.facebook.react.bridge.ReactApplicationContext;
1415
import com.facebook.react.bridge.UiThreadUtil;
16+
import com.facebook.react.devsupport.BridgeDevSupportManager;
17+
import com.facebook.react.devsupport.DefaultDevLoadingViewImplementation;
18+
import com.facebook.react.devsupport.interfaces.DevLoadingViewManager;
1519
import com.facebook.react.module.annotations.ReactModule;
1620

1721
/** {@link NativeModule} that allows JS to show dev loading view. */
1822
@ReactModule(name = NativeDevLoadingViewSpec.NAME)
1923
public class DevLoadingModule extends NativeDevLoadingViewSpec {
2024

25+
private final JSExceptionHandler mJSExceptionHandler;
26+
private @Nullable DevLoadingViewManager mDevLoadingViewManager;
27+
2128
public DevLoadingModule(ReactApplicationContext reactContext) {
2229
super(reactContext);
30+
mJSExceptionHandler = reactContext.getJSExceptionHandler();
31+
if (mJSExceptionHandler != null && mJSExceptionHandler instanceof BridgeDevSupportManager) {
32+
mDevLoadingViewManager =
33+
((BridgeDevSupportManager) mJSExceptionHandler).getDevLoadingViewManager();
34+
mDevLoadingViewManager =
35+
mDevLoadingViewManager != null
36+
? mDevLoadingViewManager
37+
: new DefaultDevLoadingViewImplementation(
38+
((BridgeDevSupportManager) mJSExceptionHandler).getReactInstanceManagerHelper());
39+
}
2340
}
2441

2542
@Override
@@ -29,7 +46,7 @@ public void showMessage(final String message, final Double color, final Double b
2946
new Runnable() {
3047
@Override
3148
public void run() {
32-
Log.w(NAME, "Showing Message in DevLoadingModule java.");
49+
mDevLoadingViewManager.showMessage(message);
3350
}
3451
});
3552
}
@@ -41,7 +58,7 @@ public void hide() {
4158
new Runnable() {
4259
@Override
4360
public void run() {
44-
Log.w(NAME, "Hiding Message in DevLoadingModule java.");
61+
mDevLoadingViewManager.hide();
4562
}
4663
});
4764
}

0 commit comments

Comments
 (0)