diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java index 0a5d1aa12c7..b07816d4c27 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java @@ -168,6 +168,14 @@ public class ReactHorizontalScrollViewManager ReactScrollViewCommandHelper.receiveCommand(this, scrollView, commandId, args); } + @Override + public void receiveCommand( + ReactHorizontalScrollView scrollView, + String commandId, + @Nullable ReadableArray args) { + ReactScrollViewCommandHelper.receiveCommand(this, scrollView, commandId, args); + } + @Override public void flashScrollIndicators(ReactHorizontalScrollView scrollView) { scrollView.flashScrollIndicators(); diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewCommandHelper.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewCommandHelper.java index eb5989be48c..fe3fda2afd7 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewCommandHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewCommandHelper.java @@ -71,15 +71,11 @@ public class ReactScrollViewCommandHelper { Assertions.assertNotNull(args); switch (commandType) { case COMMAND_SCROLL_TO: { - int destX = Math.round(PixelUtil.toPixelFromDIP(args.getDouble(0))); - int destY = Math.round(PixelUtil.toPixelFromDIP(args.getDouble(1))); - boolean animated = args.getBoolean(2); - viewManager.scrollTo(scrollView, new ScrollToCommandData(destX, destY, animated)); + scrollTo(viewManager, scrollView, args); return; } case COMMAND_SCROLL_TO_END: { - boolean animated = args.getBoolean(0); - viewManager.scrollToEnd(scrollView, new ScrollToEndCommandData(animated)); + scrollToEnd(viewManager, scrollView, args); return; } case COMMAND_FLASH_SCROLL_INDICATORS: @@ -93,4 +89,49 @@ public class ReactScrollViewCommandHelper { viewManager.getClass().getSimpleName())); } } + + public static void receiveCommand( + ScrollCommandHandler viewManager, + T scrollView, + String commandType, + @Nullable ReadableArray args) { + Assertions.assertNotNull(viewManager); + Assertions.assertNotNull(scrollView); + Assertions.assertNotNull(args); + switch (commandType) { + case "scrollTo": { + scrollTo(viewManager, scrollView, args); + return; + } + case "scrollToEnd": { + scrollToEnd(viewManager, scrollView, args); + return; + } + case "flashScrollIndicators": + viewManager.flashScrollIndicators(scrollView); + return; + + default: + throw new IllegalArgumentException(String.format( + "Unsupported command %s received by %s.", + commandType, + viewManager.getClass().getSimpleName())); + } + } + + private static void scrollTo( + ScrollCommandHandler viewManager, + T scrollView, @Nullable ReadableArray args) { + int destX = Math.round(PixelUtil.toPixelFromDIP(args.getDouble(0))); + int destY = Math.round(PixelUtil.toPixelFromDIP(args.getDouble(1))); + boolean animated = args.getBoolean(2); + viewManager.scrollTo(scrollView, new ScrollToCommandData(destX, destY, animated)); + } + + private static void scrollToEnd( + ScrollCommandHandler viewManager, + T scrollView, @Nullable ReadableArray args) { + boolean animated = args.getBoolean(0); + viewManager.scrollToEnd(scrollView, new ScrollToEndCommandData(animated)); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java index f31fef01b3a..04e1585d8a1 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java @@ -185,6 +185,14 @@ public class ReactScrollViewManager ReactScrollViewCommandHelper.receiveCommand(this, scrollView, commandId, args); } + @Override + public void receiveCommand( + ReactScrollView scrollView, + String commandId, + @Nullable ReadableArray args) { + ReactScrollViewCommandHelper.receiveCommand(this, scrollView, commandId, args); + } + @Override public void flashScrollIndicators(ReactScrollView scrollView) { scrollView.flashScrollIndicators();