diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.java index d6f6cd97365..1707c623edb 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.java @@ -113,4 +113,14 @@ public interface UIManager extends JSIModule, PerformanceCounter { * @param listener */ void removeUIManagerEventListener(UIManagerListener listener); + + /** + * This method dispatches events from RN Android code to JS. The delivery of this event will not + * be queued in EventDispatcher class. + * + * @param reactTag tag + * @param eventName name of the event + * @param event parameters + */ + void receiveEvent(int reactTag, String eventName, @Nullable WritableMap event); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java index 9c80c9442fd..e644fe69e3c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java @@ -946,6 +946,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { doLeftAndRightSwapInRTL); } + @Override public void receiveEvent(int reactTag, String eventName, @Nullable WritableMap params) { EventEmitterWrapper eventEmitter = mMountingManager.getEventEmitter(reactTag); if (eventEmitter == null) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java index 823b1ad1395..52750844ed8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java @@ -950,4 +950,11 @@ public class UIManagerModule extends ReactContextBaseJavaModule .getNativeViewHierarchyManager() .resolveView(tag); } + + @Override + public void receiveEvent(int targetTag, String eventName, @Nullable WritableMap event) { + getReactApplicationContext() + .getJSModule(RCTEventEmitter.class) + .receiveEvent(targetTag, eventName, event); + } }