From db5bc2f766e49a5f0dac150121cb796816fb824e Mon Sep 17 00:00:00 2001 From: Joshua Gross Date: Thu, 28 Jan 2021 14:01:07 -0800 Subject: [PATCH] Support RCTModernEventEmitter+RCTEventEmitter in ShowEvent Event class Summary: Support RCTModernEventEmitter+RCTEventEmitter in an Event class(es). This improves perf in Fabric. Migrate any constructor callsites to the new constructor and deprecate the previous one. Changelog: [Internal] Reviewed By: PeteTheHeat, mdvacca Differential Revision: D26056723 fbshipit-source-id: c20183a4a1189f13b15a138968937080888a200b --- .../react/views/modal/ReactModalHostManager.java | 3 ++- .../facebook/react/views/modal/ShowEvent.java | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java index 558b946067c..e10cb5cd33f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java @@ -121,7 +121,8 @@ public class ReactModalHostManager extends ViewGroupManager new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialog) { - dispatcher.dispatchEvent(new ShowEvent(view.getId())); + dispatcher.dispatchEvent( + new ShowEvent(UIManagerHelper.getSurfaceId(reactContext), view.getId())); } }); view.setEventDispatcher(dispatcher); diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ShowEvent.java b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ShowEvent.java index cccbd347668..1f126db4683 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ShowEvent.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ShowEvent.java @@ -7,16 +7,23 @@ package com.facebook.react.views.modal; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.Arguments; +import com.facebook.react.bridge.WritableMap; import com.facebook.react.uimanager.events.Event; -import com.facebook.react.uimanager.events.RCTEventEmitter; /** {@link Event} for showing a Dialog. */ /* package */ class ShowEvent extends Event { public static final String EVENT_NAME = "topShow"; + @Deprecated protected ShowEvent(int viewTag) { - super(viewTag); + this(-1, viewTag); + } + + protected ShowEvent(int surfaceId, int viewTag) { + super(surfaceId, viewTag); } @Override @@ -24,8 +31,9 @@ import com.facebook.react.uimanager.events.RCTEventEmitter; return EVENT_NAME; } + @Nullable @Override - public void dispatch(RCTEventEmitter rctEventEmitter) { - rctEventEmitter.receiveEvent(getViewTag(), getEventName(), null); + protected WritableMap getEventData() { + return Arguments.createMap(); } }