From a9babf9bc9644e02769b093d8510e30daafa1ded Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateo=20Guzm=C3=A1n?= Date: Thu, 13 Mar 2025 05:28:50 -0700 Subject: [PATCH] Migrate `ViewAtIndex` to Kotlin (#49963) Summary: Migrate com.facebook.react.uimanager.ViewAtIndex to Kotlin. ## Changelog: [INTERNAL] - Migrate com.facebook.react.uimanager.ViewAtIndex to Kotlin Pull Request resolved: https://github.com/facebook/react-native/pull/49963 Test Plan: ```bash yarn test-android yarn android ``` Reviewed By: cortinico Differential Revision: D71031245 Pulled By: javache fbshipit-source-id: eb9d4fd59a6017b9ef65b239ee73697b476df8f2 --- .../ReactAndroid/api/ReactAndroid.api | 7 ++- .../facebook/react/uimanager/ViewAtIndex.java | 55 ------------------- .../facebook/react/uimanager/ViewAtIndex.kt | 48 ++++++++++++++++ 3 files changed, 54 insertions(+), 56 deletions(-) delete mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.java create mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.kt diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index f348840baaf..033692645f9 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -4852,15 +4852,20 @@ public abstract interface class com/facebook/react/uimanager/UIViewOperationQueu public abstract fun execute ()V } -public class com/facebook/react/uimanager/ViewAtIndex { +public final class com/facebook/react/uimanager/ViewAtIndex { public static field COMPARATOR Ljava/util/Comparator; + public static final field Companion Lcom/facebook/react/uimanager/ViewAtIndex$Companion; public final field mIndex I public final field mTag I public fun (II)V public fun equals (Ljava/lang/Object;)Z + public fun hashCode ()I public fun toString ()Ljava/lang/String; } +public final class com/facebook/react/uimanager/ViewAtIndex$Companion { +} + public final class com/facebook/react/uimanager/ViewDefaults { public static final field FONT_SIZE_SP F public static final field INSTANCE Lcom/facebook/react/uimanager/ViewDefaults; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.java deleted file mode 100644 index 9f96c0849c8..00000000000 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.uimanager; - -import com.facebook.react.common.annotations.internal.LegacyArchitecture; -import com.facebook.react.common.annotations.internal.LegacyArchitectureLogLevel; -import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger; -import java.util.Comparator; - -/** - * Data structure that couples view tag to it's index in parent view. Used for managing children - * operation. - */ -@LegacyArchitecture -public class ViewAtIndex { - static { - LegacyArchitectureLogger.assertWhenLegacyArchitectureMinifyingEnabled( - "ViewAtIndex", LegacyArchitectureLogLevel.WARNING); - } - - public static Comparator COMPARATOR = - new Comparator() { - @Override - public int compare(ViewAtIndex lhs, ViewAtIndex rhs) { - return lhs.mIndex - rhs.mIndex; - } - }; - - public final int mTag; - public final int mIndex; - - public ViewAtIndex(int tag, int index) { - mTag = tag; - mIndex = index; - } - - @Override - public boolean equals(Object obj) { - if (obj == null || obj.getClass() != getClass()) { - return false; - } - ViewAtIndex other = (ViewAtIndex) obj; - return mIndex == other.mIndex && mTag == other.mTag; - } - - @Override - public String toString() { - return "[" + mTag + ", " + mIndex + "]"; - } -} diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.kt new file mode 100644 index 00000000000..13348f46680 --- /dev/null +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.kt @@ -0,0 +1,48 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +package com.facebook.react.uimanager + +import com.facebook.react.common.annotations.internal.LegacyArchitecture +import com.facebook.react.common.annotations.internal.LegacyArchitectureLogLevel +import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger +import java.util.Objects + +/** + * Data structure that couples view tag to it's index in parent view. Used for managing children + * operation. + */ +@LegacyArchitecture +public class ViewAtIndex( + @Suppress("NoHungarianNotation") @JvmField public val mTag: Int, + @Suppress("NoHungarianNotation") @JvmField public val mIndex: Int +) { + + override fun equals(other: Any?): Boolean { + if (other == null || other.javaClass != javaClass) { + return false + } + val otherViewAtIndex = other as ViewAtIndex + return mIndex == otherViewAtIndex.mIndex && mTag == otherViewAtIndex.mTag + } + + override fun hashCode(): Int = Objects.hash(mTag, mIndex) + + override fun toString(): String = "[$mTag, $mIndex]" + + public companion object { + @JvmField + public var COMPARATOR: Comparator = Comparator { lhs, rhs -> + lhs.mIndex - rhs.mIndex + } + + init { + LegacyArchitectureLogger.assertWhenLegacyArchitectureMinifyingEnabled( + "ViewAtIndex", LegacyArchitectureLogLevel.WARNING) + } + } +}