diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/modal/BUCK b/ReactAndroid/src/main/java/com/facebook/react/views/modal/BUCK index 3fb07c52a91..bb6d9818b89 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/modal/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/views/modal/BUCK @@ -23,6 +23,7 @@ rn_android_library( react_native_target("java/com/facebook/react/uimanager/annotations:annotations"), react_native_target("java/com/facebook/react/views/common:common"), react_native_target("java/com/facebook/react/views/view:view"), + react_native_target("java/com/facebook/react/viewmanagers:viewmanagers"), react_native_target("res:modal"), ], ) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java index 7c5d696144a..aec03d0f805 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java @@ -8,6 +8,8 @@ package com.facebook.react.views.modal; import android.content.DialogInterface; import android.graphics.Point; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableArray; import com.facebook.react.common.MapBuilder; import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.uimanager.LayoutShadowNode; @@ -16,16 +18,26 @@ import com.facebook.react.uimanager.StateWrapper; 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.ModalHostViewManagerDelegate; +import com.facebook.react.viewmanagers.ModalHostViewManagerInterface; import java.util.Map; /** View manager for {@link ReactModalHostView} components. */ @ReactModule(name = ReactModalHostManager.REACT_CLASS) -public class ReactModalHostManager extends ViewGroupManager { +public class ReactModalHostManager extends ViewGroupManager + implements ModalHostViewManagerInterface { public static final String REACT_CLASS = "RCTModalHostView"; + private final ViewManagerDelegate mDelegate; + + public ReactModalHostManager() { + mDelegate = new ModalHostViewManagerDelegate<>(this); + } + @Override public String getName() { return REACT_CLASS; @@ -52,21 +64,38 @@ public class ReactModalHostManager extends ViewGroupManager view.onDropInstance(); } + @Override @ReactProp(name = "animationType") - public void setAnimationType(ReactModalHostView view, String animationType) { - view.setAnimationType(animationType); + public void setAnimationType(ReactModalHostView view, @Nullable String animationType) { + if (animationType != null) { + view.setAnimationType(animationType); + } } + @Override @ReactProp(name = "transparent") public void setTransparent(ReactModalHostView view, boolean transparent) { view.setTransparent(transparent); } + @Override @ReactProp(name = "hardwareAccelerated") public void setHardwareAccelerated(ReactModalHostView view, boolean hardwareAccelerated) { view.setHardwareAccelerated(hardwareAccelerated); } + @Override + public void setPresentationStyle(ReactModalHostView view, @Nullable String value) {} + + @Override + public void setAnimated(ReactModalHostView view, boolean value) {} + + @Override + public void setSupportedOrientations(ReactModalHostView view, @Nullable ReadableArray value) {} + + @Override + public void setIdentifier(ReactModalHostView view, int value) {} + @Override protected void addEventEmitters(ThemedReactContext reactContext, final ReactModalHostView view) { final EventDispatcher dispatcher = @@ -108,4 +137,9 @@ public class ReactModalHostManager extends ViewGroupManager view.updateState(stateWrapper, modalSize.x, modalSize.y); return null; } + + @Override + public ViewManagerDelegate getDelegate() { + return mDelegate; + } }