From d5f33c19cb33e2f2c7d2470cc90872c1f065f20d Mon Sep 17 00:00:00 2001 From: Alan Lee Date: Mon, 6 Jan 2025 01:26:14 -0800 Subject: [PATCH] com.facebook.react.views.text.frescosupport.FrescoBasedReactTextInlineImageViewManager.java (#47561) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/47561 Convert Java to Kotlin Changelog: [Android][Breaking] changed visibility of FrescoBasedReactTextInlineImageViewManager to internal Reviewed By: javache Differential Revision: D65606954 fbshipit-source-id: bfdb5624a104029c8d667ddb9262c862ab846a61 --- .../ReactAndroid/api/ReactAndroid.api | 12 ---- ...oBasedReactTextInlineImageViewManager.java | 70 ------------------- ...scoBasedReactTextInlineImageViewManager.kt | 50 +++++++++++++ 3 files changed, 50 insertions(+), 82 deletions(-) delete mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java create mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.kt diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index ee4abe849cc..9b6071876fc 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -7520,18 +7520,6 @@ public final class com/facebook/react/views/text/TextTransformKt { public static final fun applyTextTransform (Ljava/lang/String;Lcom/facebook/react/views/text/TextTransform;)Ljava/lang/String; } -public class com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager : com/facebook/react/uimanager/BaseViewManager { - public static final field REACT_CLASS Ljava/lang/String; - public fun ()V - public fun (Lcom/facebook/drawee/controller/AbstractDraweeControllerBuilder;Ljava/lang/Object;)V - public synthetic fun createShadowNodeInstance ()Lcom/facebook/react/uimanager/ReactShadowNode; - public fun createShadowNodeInstance ()Lcom/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageShadowNode; - public fun createViewInstance (Lcom/facebook/react/uimanager/ThemedReactContext;)Landroid/view/View; - public fun getName ()Ljava/lang/String; - public fun getShadowNodeClass ()Ljava/lang/Class; - public fun updateExtraData (Landroid/view/View;Ljava/lang/Object;)V -} - public abstract interface class com/facebook/react/views/textinput/ContentSizeWatcher { public abstract fun onLayout ()V } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java deleted file mode 100644 index 5eec2e88828..00000000000 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java +++ /dev/null @@ -1,70 +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.views.text.frescosupport; - -import android.view.View; -import androidx.annotation.Nullable; -import com.facebook.drawee.backends.pipeline.Fresco; -import com.facebook.drawee.controller.AbstractDraweeControllerBuilder; -import com.facebook.infer.annotation.Nullsafe; -import com.facebook.react.module.annotations.ReactModule; -import com.facebook.react.uimanager.BaseViewManager; -import com.facebook.react.uimanager.ThemedReactContext; - -/** - * Manages Images embedded in Text nodes using Fresco. Since they are used only as a virtual nodes - * any type of native view operation will throw an {@link IllegalStateException}. - */ -@Nullsafe(Nullsafe.Mode.LOCAL) -@ReactModule(name = FrescoBasedReactTextInlineImageViewManager.REACT_CLASS) -public class FrescoBasedReactTextInlineImageViewManager - extends BaseViewManager { - - public static final String REACT_CLASS = "RCTTextInlineImage"; - - private final @Nullable AbstractDraweeControllerBuilder mDraweeControllerBuilder; - private final @Nullable Object mCallerContext; - - public FrescoBasedReactTextInlineImageViewManager() { - this(null, null); - } - - public FrescoBasedReactTextInlineImageViewManager( - @Nullable AbstractDraweeControllerBuilder draweeControllerBuilder, - @Nullable Object callerContext) { - mDraweeControllerBuilder = draweeControllerBuilder; - mCallerContext = callerContext; - } - - @Override - public String getName() { - return REACT_CLASS; - } - - @Override - public View createViewInstance(ThemedReactContext context) { - throw new IllegalStateException("RCTTextInlineImage doesn't map into a native view"); - } - - @Override - public FrescoBasedReactTextInlineImageShadowNode createShadowNodeInstance() { - return new FrescoBasedReactTextInlineImageShadowNode( - (mDraweeControllerBuilder != null) - ? mDraweeControllerBuilder - : Fresco.newDraweeControllerBuilder(), - mCallerContext); - } - - @Override - public Class getShadowNodeClass() { - return FrescoBasedReactTextInlineImageShadowNode.class; - } - - @Override - public void updateExtraData(View root, Object extraData) {} -} diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.kt new file mode 100644 index 00000000000..40d00621b30 --- /dev/null +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.kt @@ -0,0 +1,50 @@ +/* + * 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.views.text.frescosupport + +import android.view.View +import com.facebook.drawee.backends.pipeline.Fresco +import com.facebook.drawee.controller.AbstractDraweeControllerBuilder +import com.facebook.react.module.annotations.ReactModule +import com.facebook.react.uimanager.BaseViewManager +import com.facebook.react.uimanager.ThemedReactContext + +/** + * Manages Images embedded in Text nodes using Fresco. Since they are used only as a virtual nodes + * any type of native view operation will throw an [IllegalStateException]. + */ +@ReactModule(name = FrescoBasedReactTextInlineImageViewManager.REACT_CLASS) +internal class FrescoBasedReactTextInlineImageViewManager +@JvmOverloads +constructor( + private val draweeControllerBuilder: + @JvmSuppressWildcards + AbstractDraweeControllerBuilder<*, *, *, *>? = + null, + private val callerContext: Any? = null +) : BaseViewManager() { + + override fun getName(): String = REACT_CLASS + + public override fun createViewInstance(context: ThemedReactContext): View { + throw IllegalStateException("RCTTextInlineImage doesn't map into a native view") + } + + override fun createShadowNodeInstance(): FrescoBasedReactTextInlineImageShadowNode = + FrescoBasedReactTextInlineImageShadowNode( + draweeControllerBuilder ?: Fresco.newDraweeControllerBuilder(), callerContext) + + override fun getShadowNodeClass(): Class = + FrescoBasedReactTextInlineImageShadowNode::class.java + + override fun updateExtraData(root: View, extraData: Any) = Unit + + public companion object { + public const val REACT_CLASS: String = "RCTTextInlineImage" + } +}