From 28f5abc7173e6b27e555fe4f84dcd5d0c64acd7d Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Fri, 14 Jan 2022 16:29:10 -0800 Subject: [PATCH] Fix NVC for RCTSlider Summary: ## Android Failures ``` LOG SVC RCTSlider Invalid LOG { "missing": { "directEventTypes": { "topSlidingComplete": { "registrationName": "onSlidingComplete" } } }, "unexpected": { "bubblingEventTypes": { "paperValueChange": { "phasedRegistrationNames": { "captured": "onValueChangeCapture", "bubbled": "onValueChange" } }, "topValueChange": { "phasedRegistrationNames": { "captured": "onValueChangeCapture", "bubbled": "onValueChange" } } }, "directEventTypes": { "paperSlidingComplete": { "registrationName": "onSlidingComplete" } }, "validAttributes": { "disabled": true, "maximumTrackImage": { "process": "[Function resolveAssetSource]" }, "minimumTrackImage": { "process": "[Function resolveAssetSource]" }, "thumbImage": { "process": "[Function resolveAssetSource]" }, "trackImage": { "process": "[Function resolveAssetSource]" } } }, "unequal": {} } ``` ## iOS Failures ``` LOG SVC RCTSlider Invalid LOG { "missing": {}, "unexpected": { "bubblingEventTypes": { "paperValueChange": { "phasedRegistrationNames": { "captured": "onValueChangeCapture", "bubbled": "onValueChange" } } }, "directEventTypes": { "paperSlidingComplete": { "registrationName": "onSlidingComplete" } }, "validAttributes": { "enabled": true } }, "unequal": [] } ``` Reviewed By: yungsters Differential Revision: D33409401 fbshipit-source-id: 519b6e35246e6671dbea1f374435d92937d96c1d --- .../Slider/SliderNativeComponent.js | 4 ++-- .../getNativeComponentAttributes.js | 2 ++ React/Views/RCTSliderManager.m | 1 + .../views/slider/ReactSliderManager.java | 24 +++++++++++++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/Libraries/Components/Slider/SliderNativeComponent.js b/Libraries/Components/Slider/SliderNativeComponent.js index d31c0563e07..739bce7b2a6 100644 --- a/Libraries/Components/Slider/SliderNativeComponent.js +++ b/Libraries/Components/Slider/SliderNativeComponent.js @@ -48,8 +48,8 @@ type NativeProps = $ReadOnly<{| // Events onChange?: ?BubblingEventHandler, - onValueChange?: ?BubblingEventHandler, - onSlidingComplete?: ?DirectEventHandler, + onValueChange?: ?BubblingEventHandler, + onSlidingComplete?: ?DirectEventHandler, |}>; export default (codegenNativeComponent('Slider', { diff --git a/Libraries/ReactNative/getNativeComponentAttributes.js b/Libraries/ReactNative/getNativeComponentAttributes.js index a98daa14274..64eb4248856 100644 --- a/Libraries/ReactNative/getNativeComponentAttributes.js +++ b/Libraries/ReactNative/getNativeComponentAttributes.js @@ -188,6 +188,8 @@ function getProcessorForType(typeName: string): ?(nextProp: any) => any { return processColor; case 'ColorArray': return processColorArray; + case 'ImageSource': + return resolveAssetSource; } return null; } diff --git a/React/Views/RCTSliderManager.m b/React/Views/RCTSliderManager.m index a7a54ceeda0..9c871f6941a 100644 --- a/React/Views/RCTSliderManager.m +++ b/React/Views/RCTSliderManager.m @@ -86,5 +86,6 @@ RCT_CUSTOM_VIEW_PROPERTY(disabled, BOOL, RCTSlider) view.enabled = defaultView.enabled; } } +RCT_CUSTOM_VIEW_PROPERTY(enabled, BOOL, RCTSlider) {} @end 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 f8040636a00..78203bbaf20 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 @@ -221,12 +221,15 @@ public class ReactSliderManager extends SimpleViewManager } @Override + @ReactProp(name = "disabled") public void setDisabled(ReactSlider view, boolean value) {} @Override + @ReactProp(name = "maximumTrackImage", customType = "ImageSource") public void setMaximumTrackImage(ReactSlider view, @Nullable ReadableMap value) {} @Override + @ReactProp(name = "minimumTrackImage", customType = "ImageSource") public void setMinimumTrackImage(ReactSlider view, @Nullable ReadableMap value) {} @Override @@ -235,9 +238,11 @@ public class ReactSliderManager extends SimpleViewManager } @Override + @ReactProp(name = "thumbImage", customType = "ImageSource") public void setThumbImage(ReactSlider view, @Nullable ReadableMap value) {} @Override + @ReactProp(name = "trackImage", customType = "ImageSource") public void setTrackImage(ReactSlider view, @Nullable ReadableMap value) {} @Override @@ -258,6 +263,25 @@ public class ReactSliderManager extends SimpleViewManager return eventTypeConstants; } + @Nullable + @Override + public Map getExportedCustomBubblingEventTypeConstants() { + @Nullable + Map baseEventTypeConstants = + super.getExportedCustomBubblingEventTypeConstants(); + Map eventTypeConstants = + baseEventTypeConstants == null ? new HashMap() : baseEventTypeConstants; + eventTypeConstants.putAll( + MapBuilder.builder() + .put( + "topValueChange", + MapBuilder.of( + "phasedRegistrationNames", + MapBuilder.of("bubbled", "onValueChange", "captured", "onValueChangeCapture"))) + .build()); + return eventTypeConstants; + } + @Override public long measure( Context context,