From 62d6e595545a8bc2e060852785d21eee50f627eb Mon Sep 17 00:00:00 2001 From: Marco Saia Date: Thu, 13 Mar 2025 10:29:55 +0100 Subject: [PATCH] Minor improvements to SR Android classes --- .../sessionreplay/ShadowNodeWrapper.kt | 2 +- .../utils/text/LegacyTextViewUtils.kt | 3 +- .../utils/ReactViewBackgroundDrawableUtils.kt | 26 ++++++++-------- .../utils/ReactViewBackgroundDrawableUtils.kt | 27 ++++++++--------- .../utils/ReactViewBackgroundDrawableUtils.kt | 27 ++++++++--------- .../utils/ReactViewBackgroundDrawableUtils.kt | 30 +++++++++---------- 6 files changed, 54 insertions(+), 61 deletions(-) diff --git a/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/ShadowNodeWrapper.kt b/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/ShadowNodeWrapper.kt index 60f2dddca..65cdada37 100644 --- a/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/ShadowNodeWrapper.kt +++ b/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/ShadowNodeWrapper.kt @@ -60,7 +60,7 @@ internal class ShadowNodeWrapper( } private fun resolveShadowNode(reflectionUtils: ReflectionUtils, uiManagerModule: UIManagerModule, tag: Int): ReactShadowNode>? { - val uiManagerImplementation = reflectionUtils.getDeclaredField(uiManagerModule, UI_IMPLEMENTATION_FIELD_NAME) as UIImplementation? + val uiManagerImplementation = reflectionUtils.getDeclaredField(uiManagerModule, UI_IMPLEMENTATION_FIELD_NAME) as? UIImplementation return uiManagerImplementation?.resolveShadowNode(tag) } diff --git a/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/utils/text/LegacyTextViewUtils.kt b/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/utils/text/LegacyTextViewUtils.kt index 6e3a80084..44bc9a9a3 100644 --- a/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/utils/text/LegacyTextViewUtils.kt +++ b/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/utils/text/LegacyTextViewUtils.kt @@ -64,7 +64,7 @@ internal class LegacyTextViewUtils( } val resolvedColor = shadowNodeWrapper - .getDeclaredShadowNodeField(COLOR_FIELD_NAME) as Int? + .getDeclaredShadowNodeField(COLOR_FIELD_NAME) as? Int if (resolvedColor != null) { return formatAsRgba(resolvedColor) } @@ -115,4 +115,3 @@ internal class LegacyTextViewUtils( } } } - diff --git a/packages/react-native-session-replay/android/src/rn69/kotlin/com.datadog.reactnative.sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt b/packages/react-native-session-replay/android/src/rn69/kotlin/com.datadog.reactnative.sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt index a6cf93668..6c6a5afb0 100644 --- a/packages/react-native-session-replay/android/src/rn69/kotlin/com.datadog.reactnative.sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt +++ b/packages/react-native-session-replay/android/src/rn69/kotlin/com.datadog.reactnative.sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt @@ -40,23 +40,21 @@ internal class ReactViewBackgroundDrawableUtils() : DrawableUtils() { } override fun getReactBackgroundFromDrawable(drawable: Drawable?): Drawable? { - if (drawable is ReactViewBackgroundDrawable) { - return drawable - } - - if (drawable is InsetDrawable) { - return getReactBackgroundFromDrawable(drawable.drawable) + return when (drawable) { + is ReactViewBackgroundDrawable -> drawable + is InsetDrawable -> getReactBackgroundFromDrawable(drawable.drawable) + is LayerDrawable -> getDrawableFromLayerDrawable(drawable) + else -> null } + } - if (drawable is LayerDrawable) { - for (layerNumber in 0 until drawable.numberOfLayers) { - val layer = drawable.getDrawable(layerNumber) - if (layer is ReactViewBackgroundDrawable) { - return layer - } + private fun getDrawableFromLayerDrawable(layerDrawable: LayerDrawable): Drawable? { + for (layerNumber in 0 until layerDrawable.numberOfLayers) { + val layer = layerDrawable.getDrawable(layerNumber) + if (layer is ReactViewBackgroundDrawable) { + return layer } } - return null } @@ -79,7 +77,7 @@ internal class ReactViewBackgroundDrawableUtils() : DrawableUtils() { return reflectionUtils.getDeclaredField( backgroundDrawable, COLOR_FIELD_NAME - ) as Int? + ) as? Int } private companion object { diff --git a/packages/react-native-session-replay/android/src/rn75/kotlin/com/datadog/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt b/packages/react-native-session-replay/android/src/rn75/kotlin/com/datadog/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt index 748a2da1a..aedd8b5f8 100644 --- a/packages/react-native-session-replay/android/src/rn75/kotlin/com/datadog/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt +++ b/packages/react-native-session-replay/android/src/rn75/kotlin/com/datadog/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt @@ -42,23 +42,22 @@ internal class ReactViewBackgroundDrawableUtils : DrawableUtils() { @OptIn(UnstableReactNativeAPI::class) override fun getReactBackgroundFromDrawable(drawable: Drawable?): Drawable? { - if (drawable is CSSBackgroundDrawable) { - return drawable - } - - if (drawable is InsetDrawable) { - return getReactBackgroundFromDrawable(drawable.drawable) + return when(drawable) { + is ReactViewBackgroundDrawable -> drawable + is InsetDrawable -> getReactBackgroundFromDrawable(drawable.drawable) + is LayerDrawable -> getDrawableFromLayerDrawable(drawable) + else -> null } + } - if (drawable is LayerDrawable) { - for (layerNumber in 0 until drawable.numberOfLayers) { - val layer = drawable.getDrawable(layerNumber) - if (layer is CSSBackgroundDrawable) { - return layer - } + @OptIn(UnstableReactNativeAPI::class) + private fun getDrawableFromLayerDrawable(layerDrawable: LayerDrawable): Drawable? { + for (layerNumber in 0 until layerDrawable.numberOfLayers) { + val layer = layerDrawable.getDrawable(layerNumber) + if (layer is ReactViewBackgroundDrawable) { + return layer } } - return null } @@ -76,7 +75,7 @@ internal class ReactViewBackgroundDrawableUtils : DrawableUtils() { return reflectionUtils.getDeclaredField( backgroundDrawable, COLOR_FIELD_NAME - ) as Int? + ) as? Int } @OptIn(UnstableReactNativeAPI::class) diff --git a/packages/react-native-session-replay/android/src/rn76/kotlin/com/datadog/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt b/packages/react-native-session-replay/android/src/rn76/kotlin/com/datadog/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt index 748a2da1a..aedd8b5f8 100644 --- a/packages/react-native-session-replay/android/src/rn76/kotlin/com/datadog/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt +++ b/packages/react-native-session-replay/android/src/rn76/kotlin/com/datadog/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt @@ -42,23 +42,22 @@ internal class ReactViewBackgroundDrawableUtils : DrawableUtils() { @OptIn(UnstableReactNativeAPI::class) override fun getReactBackgroundFromDrawable(drawable: Drawable?): Drawable? { - if (drawable is CSSBackgroundDrawable) { - return drawable - } - - if (drawable is InsetDrawable) { - return getReactBackgroundFromDrawable(drawable.drawable) + return when(drawable) { + is ReactViewBackgroundDrawable -> drawable + is InsetDrawable -> getReactBackgroundFromDrawable(drawable.drawable) + is LayerDrawable -> getDrawableFromLayerDrawable(drawable) + else -> null } + } - if (drawable is LayerDrawable) { - for (layerNumber in 0 until drawable.numberOfLayers) { - val layer = drawable.getDrawable(layerNumber) - if (layer is CSSBackgroundDrawable) { - return layer - } + @OptIn(UnstableReactNativeAPI::class) + private fun getDrawableFromLayerDrawable(layerDrawable: LayerDrawable): Drawable? { + for (layerNumber in 0 until layerDrawable.numberOfLayers) { + val layer = layerDrawable.getDrawable(layerNumber) + if (layer is ReactViewBackgroundDrawable) { + return layer } } - return null } @@ -76,7 +75,7 @@ internal class ReactViewBackgroundDrawableUtils : DrawableUtils() { return reflectionUtils.getDeclaredField( backgroundDrawable, COLOR_FIELD_NAME - ) as Int? + ) as? Int } @OptIn(UnstableReactNativeAPI::class) diff --git a/packages/react-native-session-replay/android/src/rnlegacy/kotlin/com.datadog.reactnative.sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt b/packages/react-native-session-replay/android/src/rnlegacy/kotlin/com.datadog.reactnative.sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt index 176d9c1e0..e6c8d9056 100644 --- a/packages/react-native-session-replay/android/src/rnlegacy/kotlin/com.datadog.reactnative.sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt +++ b/packages/react-native-session-replay/android/src/rnlegacy/kotlin/com.datadog.reactnative.sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt @@ -36,23 +36,21 @@ internal class ReactViewBackgroundDrawableUtils() : DrawableUtils() { } override fun getReactBackgroundFromDrawable(drawable: Drawable?): Drawable? { - if (drawable is ReactViewBackgroundDrawable) { - return drawable - } - - if (drawable is InsetDrawable) { - return getReactBackgroundFromDrawable(drawable.drawable) + return when(drawable) { + is ReactViewBackgroundDrawable -> drawable + is InsetDrawable -> getReactBackgroundFromDrawable(drawable.drawable) + is LayerDrawable -> getDrawableFromLayerDrawable(drawable) + else -> null } + } - if (drawable is LayerDrawable) { - for (layerNumber in 0 until drawable.numberOfLayers) { - val layer = drawable.getDrawable(layerNumber) - if (layer is ReactViewBackgroundDrawable) { - return layer - } + private fun getDrawableFromLayerDrawable(layerDrawable: LayerDrawable): Drawable? { + for (layerNumber in 0 until layerDrawable.numberOfLayers) { + val layer = layerDrawable.getDrawable(layerNumber) + if (layer is ReactViewBackgroundDrawable) { + return layer } } - return null } @@ -73,12 +71,12 @@ internal class ReactViewBackgroundDrawableUtils() : DrawableUtils() { val borderRgb = reflectionUtils.getDeclaredField( backgroundDrawable, BORDER_RGB_FIELD_NAME - ) as Spacing? + ) as? Spacing val borderAlpha = reflectionUtils.getDeclaredField( backgroundDrawable, BORDER_ALPHA_FIELD_NAME - ) as Spacing? + ) as? Spacing val rgb = borderRgb?.get(Spacing.ALL) ?: DEFAULT_BORDER_RGB val alpha = borderAlpha?.get(Spacing.ALL) ?: DEFAULT_BORDER_ALPHA @@ -95,7 +93,7 @@ internal class ReactViewBackgroundDrawableUtils() : DrawableUtils() { return reflectionUtils.getDeclaredField( backgroundDrawable, COLOR_FIELD_NAME - ) as Int? + ) as? Int } private companion object {