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:
Родитель
1dcb4cfe7f
Коммит
aad423d59e
|
@ -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));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче