Migrate usages of RCTEventEmitter.class to EventDispatcher

Summary:
This diff migrates usages of RCTEventEmitter.class to EventDispatcher.dispatchEvent.

RCTEventEmitter is not compatible with Fabric, now we need to use EventDispatcher.dispatchEvent instead.

changelog: [Internal]

Reviewed By: JoshuaGross

Differential Revision: D21982549

fbshipit-source-id: 9ea2d9a00f063a03c2e401fc1e328ce26bcf48df
This commit is contained in:
David Vacca
2020-06-10 22:45:53 -07:00
committed by Facebook GitHub Bot
parent a0baba654e
commit 95154a6b8b
@@ -31,7 +31,10 @@ import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.ReadableMapKeySetIterator;
import com.facebook.react.bridge.ReadableType;
import com.facebook.react.bridge.UIManager;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.events.Event;
import com.facebook.react.uimanager.events.EventDispatcher;
import com.facebook.react.uimanager.events.RCTEventEmitter;
import java.util.HashMap;
@@ -42,6 +45,7 @@ import java.util.HashMap;
public class ReactAccessibilityDelegate extends AccessibilityDelegateCompat {
private static final String TAG = "ReactAccessibilityDelegate";
public static final String TOP_ACCESSIBILITY_ACTION_EVENT = "topAccessibilityAction";
private static int sCounter = 0x3f000000;
private static final int TIMEOUT_SEND_ACCESSIBILITY_EVENT = 200;
private static final int SEND_EVENT = 1;
@@ -281,9 +285,24 @@ public class ReactAccessibilityDelegate extends AccessibilityDelegateCompat {
event.putString("actionName", mAccessibilityActionsMap.get(action));
ReactContext reactContext = (ReactContext) host.getContext();
if (reactContext.hasActiveCatalystInstance()) {
reactContext
.getJSModule(RCTEventEmitter.class)
.receiveEvent(host.getId(), "topAccessibilityAction", event);
final int reactTag = host.getId();
UIManager uiManager = UIManagerHelper.getUIManager(reactContext, reactTag);
if (uiManager != null) {
uiManager
.<EventDispatcher>getEventDispatcher()
.dispatchEvent(
new Event(reactTag) {
@Override
public String getEventName() {
return TOP_ACCESSIBILITY_ACTION_EVENT;
}
@Override
public void dispatch(RCTEventEmitter rctEventEmitter) {
rctEventEmitter.receiveEvent(reactTag, TOP_ACCESSIBILITY_ACTION_EVENT, event);
}
});
}
} else {
ReactSoftException.logSoftException(
TAG, new ReactNoCrashSoftException("Cannot get RCTEventEmitter, no CatalystInstance"));