diff --git a/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js b/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js index e502bf62ddb..ca406b48b28 100644 --- a/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +++ b/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js @@ -10,6 +10,9 @@ 'use strict'; +import * as React from 'react'; + +import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands'; import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; @@ -65,6 +68,19 @@ type NativeProps = $ReadOnly<{| refreshing: boolean, |}>; +type NativeType = HostComponent; + +interface NativeCommands { + +setNativeRefreshing: ( + viewRef: React.ElementRef, + value: boolean, + ) => void; +} + +export const Commands: NativeCommands = codegenNativeCommands({ + supportedCommands: ['setNativeRefreshing'], +}); + export default (codegenNativeComponent( 'AndroidSwipeRefreshLayout', -): HostComponent); +): NativeType); diff --git a/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwipeRefreshLayoutManagerDelegate.java b/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwipeRefreshLayoutManagerDelegate.java index 7ac2f4567f8..b46b34948c1 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwipeRefreshLayoutManagerDelegate.java +++ b/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwipeRefreshLayoutManagerDelegate.java @@ -45,4 +45,12 @@ public class AndroidSwipeRefreshLayoutManagerDelegate viewManager, T view, String commandName, ReadableArray args) { + switch (commandName) { + case "setNativeRefreshing": + viewManager.setNativeRefreshing(view, args.getBoolean(0)); + break; + } + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwipeRefreshLayoutManagerInterface.java b/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwipeRefreshLayoutManagerInterface.java index 90707ec0b4f..3e81326b3e8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwipeRefreshLayoutManagerInterface.java +++ b/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwipeRefreshLayoutManagerInterface.java @@ -20,4 +20,5 @@ public interface AndroidSwipeRefreshLayoutManagerInterface { void setSize(T view, int value); void setProgressViewOffset(T view, float value); void setRefreshing(T view, boolean value); + void setNativeRefreshing(T view, boolean value); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/SwipeRefreshLayoutManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/SwipeRefreshLayoutManager.java index 1538562f5b3..82a993c6d29 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/SwipeRefreshLayoutManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/SwipeRefreshLayoutManager.java @@ -10,6 +10,7 @@ package com.facebook.react.views.swiperefresh; import static com.facebook.react.views.swiperefresh.SwipeRefreshLayoutManager.REACT_CLASS; import android.graphics.Color; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener; @@ -122,6 +123,11 @@ public class SwipeRefreshLayoutManager extends ViewGroupManager getExportedViewConstants() {