Support RCTModernEventEmitter+RCTEventEmitter in RequestCloseEvent 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: D26056714

fbshipit-source-id: 215d8e44d7909f30f4a45f57e5d22a32a635d0ba
This commit is contained in:
Joshua Gross
2021-01-28 14:07:29 -08:00
committed by Facebook GitHub Bot
parent 42274b0ba8
commit 583d6229c6
2 changed files with 16 additions and 6 deletions
@@ -104,7 +104,8 @@ public class ReactModalHostManager extends ViewGroupManager<ReactModalHostView>
public void setIdentifier(ReactModalHostView view, int value) {}
@Override
protected void addEventEmitters(ThemedReactContext reactContext, final ReactModalHostView view) {
protected void addEventEmitters(
final ThemedReactContext reactContext, final ReactModalHostView view) {
final EventDispatcher dispatcher =
UIManagerHelper.getEventDispatcherForReactTag(reactContext, view.getId());
if (dispatcher != null) {
@@ -112,7 +113,8 @@ public class ReactModalHostManager extends ViewGroupManager<ReactModalHostView>
new ReactModalHostView.OnRequestCloseListener() {
@Override
public void onRequestClose(DialogInterface dialog) {
dispatcher.dispatchEvent(new RequestCloseEvent(view.getId()));
dispatcher.dispatchEvent(
new RequestCloseEvent(UIManagerHelper.getSurfaceId(reactContext), view.getId()));
}
});
view.setOnShowListener(
@@ -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 dismissing a Dialog. */
/* package */ class RequestCloseEvent extends Event<RequestCloseEvent> {
public static final String EVENT_NAME = "topRequestClose";
@Deprecated
protected RequestCloseEvent(int viewTag) {
super(viewTag);
this(-1, viewTag);
}
protected RequestCloseEvent(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();
}
}