Skip to content

Commit 7a4da40

Browse files
cortinicometa-codesync[bot]
authored andcommitted
Convert ReactScrollView and ReactNestedScrollView to Kotlin
Summary: Convert `ReactScrollView.java` to `ReactScrollView.kt` and update the `generate-nested-scroll-view.js` script to generate `ReactNestedScrollView.kt` from the Kotlin source. Key changes: - `ReactScrollView.java` replaced by idiomatic `ReactScrollView.kt` - `ReactNestedScrollView.java` replaced by generated `ReactNestedScrollView.kt` - Generation script updated for Kotlin source/output file paths and transformations - BUCK file updated to reference `.kt` files in the verification genrule - `ReactScrollViewManager.kt` updated to use Kotlin property access syntax for `scrollEnabled`, `stateWrapper`, and `fadingEdgeLengthStart/End` - Public API surface preserved: only additive `synthetic` constructor from `JvmOverloads` Changelog: [Android][Changed] - Convert `ReactScrollView` and `ReactNestedScrollView` from Java to Kotlin Differential Revision: D107236882
1 parent 64c9663 commit 7a4da40

11 files changed

Lines changed: 2718 additions & 3351 deletions

File tree

packages/react-native/ReactAndroid/api/ReactAndroid.api

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5429,6 +5429,30 @@ public abstract interface class com/facebook/react/views/scroll/FpsListener {
54295429
public abstract fun isEnabled ()Z
54305430
}
54315431

5432+
public final class com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper : com/facebook/react/bridge/UIManagerListener {
5433+
public fun <init> (Landroid/view/ViewGroup;Z)V
5434+
public fun didDispatchMountItems (Lcom/facebook/react/bridge/UIManager;)V
5435+
public fun didMountItems (Lcom/facebook/react/bridge/UIManager;)V
5436+
public fun didScheduleMountItems (Lcom/facebook/react/bridge/UIManager;)V
5437+
public final fun getConfig ()Lcom/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper$Config;
5438+
public final fun setConfig (Lcom/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper$Config;)V
5439+
public final fun start ()V
5440+
public final fun stop ()V
5441+
public fun willDispatchViewUpdates (Lcom/facebook/react/bridge/UIManager;)V
5442+
public fun willMountItems (Lcom/facebook/react/bridge/UIManager;)V
5443+
}
5444+
5445+
public final class com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper$Config {
5446+
public static final field Companion Lcom/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper$Config$Companion;
5447+
public static final fun fromReadableMap (Lcom/facebook/react/bridge/ReadableMap;)Lcom/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper$Config;
5448+
public final fun getAutoScrollToTopThreshold ()Ljava/lang/Integer;
5449+
public final fun getMinIndexForVisible ()I
5450+
}
5451+
5452+
public final class com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper$Config$Companion {
5453+
public final fun fromReadableMap (Lcom/facebook/react/bridge/ReadableMap;)Lcom/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper$Config;
5454+
}
5455+
54325456
public final class com/facebook/react/views/scroll/OnScrollDispatchHelper {
54335457
public fun <init> ()V
54345458
public final fun getXFlingVelocity ()F
@@ -5598,6 +5622,7 @@ public final class com/facebook/react/views/scroll/ReactHorizontalScrollViewMana
55985622
public class com/facebook/react/views/scroll/ReactScrollView : android/widget/ScrollView, android/view/View$OnLayoutChangeListener, android/view/ViewGroup$OnHierarchyChangeListener, com/facebook/react/uimanager/ReactClippingViewGroup, com/facebook/react/uimanager/ReactOverflowViewWithInset, com/facebook/react/views/scroll/ReactAccessibleScrollView, com/facebook/react/views/scroll/ReactScrollViewHelper$HasFlingAnimator, com/facebook/react/views/scroll/ReactScrollViewHelper$HasScrollEventThrottle, com/facebook/react/views/scroll/ReactScrollViewHelper$HasScrollState, com/facebook/react/views/scroll/ReactScrollViewHelper$HasSmoothScroll, com/facebook/react/views/scroll/ReactScrollViewHelper$HasStateWrapper, com/facebook/react/views/scroll/VirtualViewContainer {
55995623
public fun <init> (Landroid/content/Context;)V
56005624
public fun <init> (Landroid/content/Context;Lcom/facebook/react/views/scroll/FpsListener;)V
5625+
public synthetic fun <init> (Landroid/content/Context;Lcom/facebook/react/views/scroll/FpsListener;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
56015626
public fun abortAnimation ()V
56025627
public fun dispatchGenericMotionEvent (Landroid/view/MotionEvent;)Z
56035628
public fun draw (Landroid/graphics/Canvas;)V
@@ -5925,6 +5950,28 @@ public abstract interface class com/facebook/react/views/scroll/VirtualView {
59255950
public abstract fun onModeChange (Lcom/facebook/react/views/virtual/VirtualViewMode;Landroid/graphics/Rect;)V
59265951
}
59275952

5953+
public abstract class com/facebook/react/views/scroll/VirtualViewContainerState {
5954+
public static final field Companion Lcom/facebook/react/views/scroll/VirtualViewContainerState$Companion;
5955+
public fun <init> (Landroid/view/ViewGroup;)V
5956+
public static final fun create (Landroid/view/ViewGroup;)Lcom/facebook/react/views/scroll/VirtualViewContainerState;
5957+
protected final fun getEmptyRect ()Landroid/graphics/Rect;
5958+
protected final fun getPrerenderRatio ()D
5959+
protected final fun getPrerenderRect ()Landroid/graphics/Rect;
5960+
protected final fun getScrollView ()Landroid/view/ViewGroup;
5961+
protected abstract fun getVirtualViews ()Ljava/util/Collection;
5962+
protected final fun getVisibleRect ()Landroid/graphics/Rect;
5963+
public fun onChange (Lcom/facebook/react/views/scroll/VirtualView;)V
5964+
public fun remove (Lcom/facebook/react/views/scroll/VirtualView;)V
5965+
protected abstract fun updateModes (Lcom/facebook/react/views/scroll/VirtualView;)V
5966+
public static synthetic fun updateModes$default (Lcom/facebook/react/views/scroll/VirtualViewContainerState;Lcom/facebook/react/views/scroll/VirtualView;ILjava/lang/Object;)V
5967+
protected final fun updateRects ()V
5968+
public final fun updateState ()V
5969+
}
5970+
5971+
public final class com/facebook/react/views/scroll/VirtualViewContainerState$Companion {
5972+
public final fun create (Landroid/view/ViewGroup;)Lcom/facebook/react/views/scroll/VirtualViewContainerState;
5973+
}
5974+
59285975
public class com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout : androidx/swiperefreshlayout/widget/SwipeRefreshLayout {
59295976
public fun <init> (Lcom/facebook/react/bridge/ReactContext;)V
59305977
public fun canChildScrollUp ()Z

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ import java.lang.ref.WeakReference
2828
* This uses UIManager to listen to updates and capture position of items before and after layout.
2929
*/
3030
@OptIn(UnstableReactNativeAPI::class)
31-
internal class MaintainVisibleScrollPositionHelper<ScrollViewT>(
31+
public class MaintainVisibleScrollPositionHelper<ScrollViewT>(
3232
private val scrollView: ScrollViewT,
3333
private val horizontal: Boolean,
3434
) : UIManagerListener where ScrollViewT : HasSmoothScroll?, ScrollViewT : ViewGroup? {
3535

36-
var config: Config? = null
36+
public var config: Config? = null
3737
private var firstVisibleViewRef: WeakReference<View>? = null
3838
private var prevFirstVisibleFrame: Rect? = null
3939
private var isListening = false
@@ -50,11 +50,14 @@ internal class MaintainVisibleScrollPositionHelper<ScrollViewT>(
5050
)
5151
)
5252

53-
class Config
54-
internal constructor(val minIndexForVisible: Int, val autoScrollToTopThreshold: Int?) {
55-
companion object {
53+
public class Config
54+
internal constructor(
55+
public val minIndexForVisible: Int,
56+
public val autoScrollToTopThreshold: Int?,
57+
) {
58+
public companion object {
5659
@JvmStatic
57-
fun fromReadableMap(value: ReadableMap): Config {
60+
public fun fromReadableMap(value: ReadableMap): Config {
5861
val minIndexForVisible = value.getInt("minIndexForVisible")
5962
val autoScrollToTopThreshold =
6063
if (value.hasKey("autoscrollToTopThreshold")) value.getInt("autoscrollToTopThreshold")
@@ -65,7 +68,7 @@ internal class MaintainVisibleScrollPositionHelper<ScrollViewT>(
6568
}
6669

6770
/** Start listening to view hierarchy updates. Should be called when this is created. */
68-
fun start() {
71+
public fun start() {
6972
if (isListening) {
7073
return
7174
}
@@ -74,7 +77,7 @@ internal class MaintainVisibleScrollPositionHelper<ScrollViewT>(
7477
}
7578

7679
/** Stop listening to view hierarchy updates. Should be called before this is destroyed. */
77-
fun stop() {
80+
public fun stop() {
7881
if (!isListening) {
7982
return
8083
}

0 commit comments

Comments
 (0)