diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/Dynamic.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/Dynamic.kt index 734816b93ab..db4b4570caf 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/Dynamic.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/Dynamic.kt @@ -16,7 +16,7 @@ public interface Dynamic { public val isNull: Boolean - public fun asArray(): ReadableArray + public fun asArray(): ReadableArray? public fun asBoolean(): Boolean @@ -24,9 +24,9 @@ public interface Dynamic { public fun asInt(): Int - public fun asMap(): ReadableMap + public fun asMap(): ReadableMap? - public fun asString(): String + public fun asString(): String? public fun recycle(): Unit } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromArray.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromArray.java index 18f05966437..a77e237b5fd 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromArray.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromArray.java @@ -70,29 +70,26 @@ class DynamicFromArray implements Dynamic { } @Override - public String asString() { + public @Nullable String asString() { if (mArray == null) { throw new IllegalStateException("This dynamic value has been recycled"); } - // NULLSAFE_FIXME[Return Not Nullable] return mArray.getString(mIndex); } @Override - public ReadableArray asArray() { + public @Nullable ReadableArray asArray() { if (mArray == null) { throw new IllegalStateException("This dynamic value has been recycled"); } - // NULLSAFE_FIXME[Return Not Nullable] return mArray.getArray(mIndex); } @Override - public ReadableMap asMap() { + public @Nullable ReadableMap asMap() { if (mArray == null) { throw new IllegalStateException("This dynamic value has been recycled"); } - // NULLSAFE_FIXME[Return Not Nullable] return mArray.getMap(mIndex); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/LengthPercentage.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/LengthPercentage.kt index a33b6b4d0f9..6a9a79ea719 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/LengthPercentage.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/LengthPercentage.kt @@ -36,7 +36,7 @@ public data class LengthPercentage( } ReadableType.String -> { val s = dynamic.asString() - if (s.endsWith("%")) { + if (s != null && s.endsWith("%")) { try { val value = s.substring(0, s.length - 1).toFloat() if (value >= 0f) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.kt index e277dc9ad8d..dd736acce06 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.kt @@ -76,7 +76,7 @@ public class ReactDrawerLayoutManager : } drawerPosition.type == ReadableType.String -> - setDrawerPositionInternal(view, drawerPosition.asString()) + setDrawerPositionInternal(view, checkNotNull(drawerPosition.asString())) else -> { FLog.w(ReactConstants.TAG, "drawerPosition must be a string or int") diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt index 49f724944b0..50dbdfc93c0 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt @@ -188,6 +188,10 @@ public open class ReactViewManager : ReactClippingViewManager() when (hitSlop.type) { ReadableType.Map -> { val hitSlopMap = hitSlop.asMap() + if (hitSlopMap == null) { + view.setHitSlopRect(null) + return + } view.setHitSlopRect( Rect( hitSlopMap.px("left"),