From f6af7b2a585ed1a2937268a98eba29bc489ae1b5 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 ReactSlidingCompleteEvent 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: D26056808 fbshipit-source-id: aa7ff9520a6a2470c642f06797757e1c0362abe9 --- .../views/slider/ReactSliderManager.java | 1 + .../slider/ReactSlidingCompleteEvent.java | 30 ++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java index 479252c2037..3d7d8fdec04 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java @@ -118,6 +118,7 @@ public class ReactSliderManager extends SimpleViewManager if (eventDispatcher != null) { eventDispatcher.dispatchEvent( new ReactSlidingCompleteEvent( + UIManagerHelper.getSurfaceId(seekbar), seekbar.getId(), ((ReactSlider) seekbar).toRealProgress(seekbar.getProgress()))); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSlidingCompleteEvent.java b/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSlidingCompleteEvent.java index 2e2e9470707..075fd7b46e8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSlidingCompleteEvent.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSlidingCompleteEvent.java @@ -7,10 +7,10 @@ package com.facebook.react.views.slider; +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 when the user finishes dragging the slider. */ public class ReactSlidingCompleteEvent extends Event { @@ -19,8 +19,13 @@ public class ReactSlidingCompleteEvent extends Event private final double mValue; + @Deprecated public ReactSlidingCompleteEvent(int viewId, double value) { - super(viewId); + this(-1, viewId, value); + } + + public ReactSlidingCompleteEvent(int surfaceId, int viewId, double value) { + super(surfaceId, viewId); mValue = value; } @@ -33,6 +38,15 @@ public class ReactSlidingCompleteEvent extends Event return EVENT_NAME; } + @Nullable + @Override + protected WritableMap getEventData() { + WritableMap eventData = Arguments.createMap(); + eventData.putInt("target", getViewTag()); + eventData.putDouble("value", getValue()); + return eventData; + } + @Override public short getCoalescingKey() { return 0; @@ -42,16 +56,4 @@ public class ReactSlidingCompleteEvent extends Event public boolean canCoalesce() { return false; } - - @Override - public void dispatch(RCTEventEmitter rctEventEmitter) { - rctEventEmitter.receiveEvent(getViewTag(), getEventName(), serializeEventData()); - } - - private WritableMap serializeEventData() { - WritableMap eventData = Arguments.createMap(); - eventData.putInt("target", getViewTag()); - eventData.putDouble("value", getValue()); - return eventData; - } }