Skip to content

Commit b28706e

Browse files
cortinicoOthinn
authored andcommitted
Make events work for Fabric Interop on Bridgeless (facebook#40941)
Summary: Pull Request resolved: facebook#40941 Events are currently not working for Fabric Interop on Bridgeless. That's because the `BridgelessReactContext` is not checking for interop modules on `getJsModule` calls, so the `InteropEventEmitter` is never returned. This extends `BridgelessReactContext` so that `InteropEventEmitter` is returned if the Interop Layer is turned on. Changelog: [Internal] [Changed] - Make events work for Fabric Interop on Bridgeless Reviewed By: cipolleschi Differential Revision: D50266484 fbshipit-source-id: 0188d71bdc7acc8c188d886d45f0258914ad7af7
1 parent 62d9cd7 commit b28706e

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public interface RCTDeviceEventEmitter extends JavaScriptModule {
7171
private @Nullable JSExceptionHandler mExceptionHandlerWrapper;
7272
private @Nullable WeakReference<Activity> mCurrentActivity;
7373

74-
private @Nullable InteropModuleRegistry mInteropModuleRegistry;
74+
protected @Nullable InteropModuleRegistry mInteropModuleRegistry;
7575
private boolean mIsInitialized = false;
7676

7777
public ReactContext(Context base) {

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.facebook.react.bridge.ReactNoCrashBridgeNotAllowedSoftException;
2323
import com.facebook.react.bridge.ReactSoftExceptionLogger;
2424
import com.facebook.react.bridge.WritableNativeArray;
25+
import com.facebook.react.config.ReactFeatureFlags;
2526
import com.facebook.react.devsupport.interfaces.DevSupportManager;
2627
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
2728
import com.facebook.react.uimanager.events.EventDispatcher;
@@ -49,6 +50,9 @@ class BridgelessReactContext extends ReactApplicationContext implements EventDis
4950
BridgelessReactContext(Context context, ReactHostImpl host) {
5051
super(context);
5152
mReactHost = host;
53+
if (ReactFeatureFlags.unstable_useFabricInterop) {
54+
initializeInteropModules();
55+
}
5256
}
5357

5458
@Override
@@ -124,6 +128,10 @@ public BridgelessJSModuleInvocationHandler(
124128

125129
@Override
126130
public <T extends JavaScriptModule> T getJSModule(Class<T> jsInterface) {
131+
if (mInteropModuleRegistry != null
132+
&& mInteropModuleRegistry.shouldReturnInteropModule(jsInterface)) {
133+
return mInteropModuleRegistry.getInteropModule(jsInterface);
134+
}
127135
JavaScriptModule interfaceProxy =
128136
(JavaScriptModule)
129137
Proxy.newProxyInstance(

0 commit comments

Comments
 (0)