Support RCTModernEventEmitter+RCTEventEmitter in ReactSwitchEvent 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: D26056823

fbshipit-source-id: 1d25afb2d4cfd7e539214d4592e361260f98fc56
This commit is contained in:
Joshua Gross 2021-01-28 14:01:07 -08:00 коммит произвёл Facebook GitHub Bot
Родитель 1dcb4cfe7f
Коммит aad423d59e
2 изменённых файлов: 19 добавлений и 14 удалений

Просмотреть файл

@ -7,10 +7,10 @@
package com.facebook.react.views.switchview;
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;
/** Event emitted by a ReactSwitchManager once a switch is fully switched on/off */
/*package*/ class ReactSwitchEvent extends Event<ReactSwitchEvent> {
@ -19,8 +19,13 @@ import com.facebook.react.uimanager.events.RCTEventEmitter;
private final boolean mIsChecked;
@Deprecated
public ReactSwitchEvent(int viewId, boolean isChecked) {
super(viewId);
this(-1, viewId, isChecked);
}
public ReactSwitchEvent(int surfaceId, int viewId, boolean isChecked) {
super(surfaceId, viewId);
mIsChecked = isChecked;
}
@ -33,21 +38,18 @@ import com.facebook.react.uimanager.events.RCTEventEmitter;
return EVENT_NAME;
}
@Nullable
@Override
public short getCoalescingKey() {
// All switch events for a given view can be coalesced.
return 0;
}
@Override
public void dispatch(RCTEventEmitter rctEventEmitter) {
rctEventEmitter.receiveEvent(getViewTag(), getEventName(), serializeEventData());
}
private WritableMap serializeEventData() {
protected WritableMap getEventData() {
WritableMap eventData = Arguments.createMap();
eventData.putInt("target", getViewTag());
eventData.putBoolean("value", getIsChecked());
return eventData;
}
@Override
public short getCoalescingKey() {
// All switch events for a given view can be coalesced.
return 0;
}
}

Просмотреть файл

@ -20,6 +20,7 @@ import com.facebook.react.uimanager.LayoutShadowNode;
import com.facebook.react.uimanager.PixelUtil;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.UIManagerHelper;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.ViewManagerDelegate;
import com.facebook.react.uimanager.ViewProps;
@ -89,7 +90,9 @@ public class ReactSwitchManager extends SimpleViewManager<ReactSwitch>
uiManager
.getEventDispatcher()
.dispatchEvent(new ReactSwitchEvent(buttonView.getId(), isChecked));
.dispatchEvent(
new ReactSwitchEvent(
UIManagerHelper.getSurfaceId(reactContext), buttonView.getId(), isChecked));
}
};