From 5cfe58899304c8276e1134fa61d31e491356b2ef Mon Sep 17 00:00:00 2001 From: Oleksandr Melnykov Date: Mon, 23 Sep 2019 07:15:16 -0700 Subject: [PATCH] Use generated Java delegate for setting properties on ReactSwitchManager Summary: This diff migrates `ReactSwtichManager` to use the generated `ReactSwtichManagerDelegate` for setting its properties. Reviewed By: TheSavior Differential Revision: D17395067 fbshipit-source-id: 1489c5d08cef860030ecbd23ef19bd8de1328d71 --- .../Switch/AndroidSwitchNativeComponent.js | 2 +- .../AndroidSwitchManagerDelegate.java | 2 +- .../com/facebook/react/views/switchview/BUCK | 1 + .../views/switchview/ReactSwitchManager.java | 26 ++++++++++++++++++- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/Libraries/Components/Switch/AndroidSwitchNativeComponent.js b/Libraries/Components/Switch/AndroidSwitchNativeComponent.js index e02fa8115e..2bbf6f3fb3 100644 --- a/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +++ b/Libraries/Components/Switch/AndroidSwitchNativeComponent.js @@ -30,7 +30,7 @@ type NativeProps = $ReadOnly<{| // Props disabled?: WithDefault, - enabled?: WithDefault, + enabled?: WithDefault, thumbColor?: ?ColorValue, trackColorForFalse?: ?ColorValue, trackColorForTrue?: ?ColorValue, diff --git a/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwitchManagerDelegate.java b/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwitchManagerDelegate.java index 0d877317a1..e3e6a6fa15 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwitchManagerDelegate.java +++ b/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwitchManagerDelegate.java @@ -26,7 +26,7 @@ public class AndroidSwitchManagerDelegate { +public class ReactSwitchManager extends SimpleViewManager + implements AndroidSwitchManagerInterface { public static final String REACT_CLASS = "AndroidSwitch"; @@ -78,6 +82,12 @@ public class ReactSwitchManager extends SimpleViewManager { } }; + private final ViewManagerDelegate mDelegate; + + public ReactSwitchManager() { + mDelegate = new AndroidSwitchManagerDelegate<>(this); + } + @Override public String getName() { return REACT_CLASS; @@ -100,21 +110,25 @@ public class ReactSwitchManager extends SimpleViewManager { return view; } + @Override @ReactProp(name = "disabled", defaultBoolean = false) public void setDisabled(ReactSwitch view, boolean disabled) { view.setEnabled(!disabled); } + @Override @ReactProp(name = ViewProps.ENABLED, defaultBoolean = true) public void setEnabled(ReactSwitch view, boolean enabled) { view.setEnabled(enabled); } + @Override @ReactProp(name = ViewProps.ON) public void setOn(ReactSwitch view, boolean on) { this.setValue(view, on); } + @Override @ReactProp(name = "value") public void setValue(ReactSwitch view, boolean value) { // we set the checked change listener to null and then restore it so that we don't fire an @@ -124,26 +138,31 @@ public class ReactSwitchManager extends SimpleViewManager { view.setOnCheckedChangeListener(ON_CHECKED_CHANGE_LISTENER); } + @Override @ReactProp(name = "thumbTintColor", customType = "Color") public void setThumbTintColor(ReactSwitch view, @Nullable Integer color) { this.setThumbColor(view, color); } + @Override @ReactProp(name = "thumbColor", customType = "Color") public void setThumbColor(ReactSwitch view, @Nullable Integer color) { view.setThumbColor(color); } + @Override @ReactProp(name = "trackColorForFalse", customType = "Color") public void setTrackColorForFalse(ReactSwitch view, @Nullable Integer color) { view.setTrackColorForFalse(color); } + @Override @ReactProp(name = "trackColorForTrue", customType = "Color") public void setTrackColorForTrue(ReactSwitch view, @Nullable Integer color) { view.setTrackColorForTrue(color); } + @Override @ReactProp(name = "trackTintColor", customType = "Color") public void setTrackTintColor(ReactSwitch view, @Nullable Integer color) { view.setTrackColor(color); @@ -153,4 +172,9 @@ public class ReactSwitchManager extends SimpleViewManager { protected void addEventEmitters(final ThemedReactContext reactContext, final ReactSwitch view) { view.setOnCheckedChangeListener(ON_CHECKED_CHANGE_LISTENER); } + + @Override + protected ViewManagerDelegate getDelegate() { + return mDelegate; + } }