Adding show/hide Native Implementation of Dev Loading Module (#35746)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/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
This commit is contained in:
Arushi Kesarwani 2022-12-30 14:39:20 -08:00 коммит произвёл Facebook GitHub Bot
Родитель 57f1196557
Коммит 4923a0997b
4 изменённых файлов: 42 добавлений и 3 удалений

Просмотреть файл

@ -444,6 +444,10 @@ public class ReactContext extends ContextWrapper {
return mExceptionHandlerWrapper;
}
public JSExceptionHandler getJSExceptionHandler() {
return mJSExceptionHandler;
}
public boolean hasCurrentActivity() {
return mCurrentActivity != null && mCurrentActivity.get() != null;
}

Просмотреть файл

@ -65,6 +65,8 @@ import java.util.concurrent.TimeoutException;
*/
public final class BridgeDevSupportManager extends DevSupportManagerBase {
private boolean mIsSamplingProfilerEnabled = false;
private ReactInstanceDevHelper mReactInstanceManagerHelper;
private @Nullable DevLoadingViewManager mDevLoadingViewManager;
public BridgeDevSupportManager(
Context applicationContext,
@ -89,6 +91,9 @@ public final class BridgeDevSupportManager extends DevSupportManagerBase {
surfaceDelegateFactory,
devLoadingViewManager);
mReactInstanceManagerHelper = reactInstanceManagerHelper;
mDevLoadingViewManager = devLoadingViewManager;
if (getDevSettings().isStartSamplingProfilerOnInit()) {
// Only start the profiler. If its already running, there is an error
if (!mIsSamplingProfilerEnabled) {
@ -128,6 +133,14 @@ public final class BridgeDevSupportManager extends DevSupportManagerBase {
}
}
public DevLoadingViewManager getDevLoadingViewManager() {
return mDevLoadingViewManager;
}
public ReactInstanceDevHelper getReactInstanceManagerHelper() {
return mReactInstanceManagerHelper;
}
@Override
protected String getUniqueTag() {
return "Bridge";

Просмотреть файл

@ -8,6 +8,9 @@ rn_android_library(
"pfh:ReactNative_CommonInfrastructurePlaceholder",
],
language = "JAVA",
provided_deps = [
react_native_dep("third-party/android/androidx:annotation"),
],
visibility = [
"PUBLIC",
],
@ -15,6 +18,8 @@ rn_android_library(
react_native_dep("third-party/java/infer-annotations:infer-annotations"),
react_native_dep("third-party/java/jsr-305:jsr-305"),
react_native_target("java/com/facebook/react/bridge:bridge"),
react_native_target("java/com/facebook/react/devsupport:devsupport"),
react_native_target("java/com/facebook/react/devsupport:interfaces"),
react_native_target("java/com/facebook/react/common:common"),
react_native_target("java/com/facebook/react/module/annotations:annotations"),
],

Просмотреть файл

@ -7,19 +7,36 @@
package com.facebook.react.modules.devloading;
import android.util.Log;
import androidx.annotation.Nullable;
import com.facebook.fbreact.specs.NativeDevLoadingViewSpec;
import com.facebook.react.bridge.JSExceptionHandler;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.devsupport.BridgeDevSupportManager;
import com.facebook.react.devsupport.DefaultDevLoadingViewImplementation;
import com.facebook.react.devsupport.interfaces.DevLoadingViewManager;
import com.facebook.react.module.annotations.ReactModule;
/** {@link NativeModule} that allows JS to show dev loading view. */
@ReactModule(name = NativeDevLoadingViewSpec.NAME)
public class DevLoadingModule extends NativeDevLoadingViewSpec {
private final JSExceptionHandler mJSExceptionHandler;
private @Nullable DevLoadingViewManager mDevLoadingViewManager;
public DevLoadingModule(ReactApplicationContext reactContext) {
super(reactContext);
mJSExceptionHandler = reactContext.getJSExceptionHandler();
if (mJSExceptionHandler != null && mJSExceptionHandler instanceof BridgeDevSupportManager) {
mDevLoadingViewManager =
((BridgeDevSupportManager) mJSExceptionHandler).getDevLoadingViewManager();
mDevLoadingViewManager =
mDevLoadingViewManager != null
? mDevLoadingViewManager
: new DefaultDevLoadingViewImplementation(
((BridgeDevSupportManager) mJSExceptionHandler).getReactInstanceManagerHelper());
}
}
@Override
@ -29,7 +46,7 @@ public class DevLoadingModule extends NativeDevLoadingViewSpec {
new Runnable() {
@Override
public void run() {
Log.w(NAME, "Showing Message in DevLoadingModule java.");
mDevLoadingViewManager.showMessage(message);
}
});
}
@ -41,7 +58,7 @@ public class DevLoadingModule extends NativeDevLoadingViewSpec {
new Runnable() {
@Override
public void run() {
Log.w(NAME, "Hiding Message in DevLoadingModule java.");
mDevLoadingViewManager.hide();
}
});
}