From 81f567d4aa3cf67c8ff5c55d16a14c77e4083122 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 ReactDrawerLayoutManager Summary: This diff migrates `ReactDrawerLayoutManager` to use the generated `AndroidDrawerLayoutManagerDelegate` for setting its properties. Reviewed By: mdvacca Differential Revision: D17343383 fbshipit-source-id: 85cd7ee3531b152da2601048f5e458f5dad73ad6 --- .../AndroidDrawerLayoutNativeComponent.js | 2 +- .../AndroidDrawerLayoutManagerDelegate.java | 2 +- .../AndroidDrawerLayoutManagerInterface.java | 2 +- .../java/com/facebook/react/views/drawer/BUCK | 1 + .../drawer/ReactDrawerLayoutManager.java | 85 +++++++++++++++---- 5 files changed, 73 insertions(+), 19 deletions(-) diff --git a/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js b/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js index 71668e22f97..ad275282ebc 100644 --- a/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +++ b/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js @@ -64,7 +64,7 @@ type NativeProps = $ReadOnly<{| * from the edge of the window. */ - drawerWidth?: ?Float, + drawerWidth?: WithDefault, /** * Specifies the lock mode of the drawer. The drawer can be locked in 3 states: diff --git a/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDrawerLayoutManagerDelegate.java b/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDrawerLayoutManagerDelegate.java index e269db6e877..d65992cc9a9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDrawerLayoutManagerDelegate.java +++ b/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDrawerLayoutManagerDelegate.java @@ -33,7 +33,7 @@ public class AndroidDrawerLayoutManagerDelegate { void setKeyboardDismissMode(T view, @Nullable String value); void setDrawerBackgroundColor(T view, @Nullable Integer value); void setDrawerPosition(T view, @Nullable String value); - void setDrawerWidth(T view, float value); + void setDrawerWidth(T view, @Nullable Float value); void setDrawerLockMode(T view, @Nullable String value); void setStatusBarBackgroundColor(T view, @Nullable Integer value); void openDrawer(T view); diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/drawer/BUCK b/ReactAndroid/src/main/java/com/facebook/react/views/drawer/BUCK index 131f81dc93c..57d72472c19 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/drawer/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/views/drawer/BUCK @@ -24,5 +24,6 @@ rn_android_library( react_native_target("java/com/facebook/react/uimanager:uimanager"), react_native_target("java/com/facebook/react/uimanager/annotations:annotations"), react_native_target("java/com/facebook/react/views/scroll:scroll"), + react_native_target("java/com/facebook/react/viewmanagers:viewmanagers"), ], ) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java index 6515d1b18e9..27e6fa926d2 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java @@ -8,7 +8,6 @@ package com.facebook.react.views.drawer; import android.view.Gravity; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.drawerlayout.widget.DrawerLayout; @@ -22,8 +21,11 @@ import com.facebook.react.uimanager.PixelUtil; import com.facebook.react.uimanager.ThemedReactContext; import com.facebook.react.uimanager.UIManagerModule; import com.facebook.react.uimanager.ViewGroupManager; +import com.facebook.react.uimanager.ViewManagerDelegate; import com.facebook.react.uimanager.annotations.ReactProp; import com.facebook.react.uimanager.events.EventDispatcher; +import com.facebook.react.viewmanagers.AndroidDrawerLayoutManagerDelegate; +import com.facebook.react.viewmanagers.AndroidDrawerLayoutManagerInterface; import com.facebook.react.views.drawer.events.DrawerClosedEvent; import com.facebook.react.views.drawer.events.DrawerOpenedEvent; import com.facebook.react.views.drawer.events.DrawerSlideEvent; @@ -32,13 +34,20 @@ import java.util.Map; /** View Manager for {@link ReactDrawerLayout} components. */ @ReactModule(name = ReactDrawerLayoutManager.REACT_CLASS) -public class ReactDrawerLayoutManager extends ViewGroupManager { +public class ReactDrawerLayoutManager extends ViewGroupManager + implements AndroidDrawerLayoutManagerInterface { public static final String REACT_CLASS = "AndroidDrawerLayout"; public static final int OPEN_DRAWER = 1; public static final int CLOSE_DRAWER = 2; + private final ViewManagerDelegate mDelegate; + + public ReactDrawerLayoutManager() { + mDelegate = new AndroidDrawerLayoutManagerDelegate<>(this); + } + @Override public @NonNull String getName() { return REACT_CLASS; @@ -47,9 +56,8 @@ public class ReactDrawerLayoutManager extends ViewGroupManager getDelegate() { + return mDelegate; + } + public static class DrawerEventEmitter implements DrawerLayout.DrawerListener { private final DrawerLayout mDrawerLayout;