diff --git a/Libraries/Image/Image.android.js b/Libraries/Image/Image.android.js index 2bd3dce70ef..2dd43e4dfb7 100644 --- a/Libraries/Image/Image.android.js +++ b/Libraries/Image/Image.android.js @@ -198,13 +198,22 @@ let Image = (props: ImagePropsType, forwardedRef) => { : nativeProps; return ( - {hasTextAncestor => - hasTextAncestor ? ( - - ) : ( - - ) - } + {hasTextAncestor => { + if (hasTextAncestor) { + let src = Array.isArray(sources) ? sources : [sources]; + return ( + + ); + } + + return ; + }} ); }} diff --git a/Libraries/Image/ImageViewNativeComponent.js b/Libraries/Image/ImageViewNativeComponent.js index f908019fefa..d0e02068270 100644 --- a/Libraries/Image/ImageViewNativeComponent.js +++ b/Libraries/Image/ImageViewNativeComponent.js @@ -32,7 +32,7 @@ type Props = $ReadOnly<{ // Android native props shouldNotifyLoadEvents?: boolean, src?: ?ResolvedAssetSource | $ReadOnlyArray<{uri: string, ...}>, - headers?: ?string, + headers?: ?{[string]: string}, defaultSrc?: ?string, loadingIndicatorSrc?: ?string, }>; diff --git a/Libraries/Image/TextInlineImageNativeComponent.js b/Libraries/Image/TextInlineImageNativeComponent.js index 7ea25343fdd..b3b14037689 100644 --- a/Libraries/Image/TextInlineImageNativeComponent.js +++ b/Libraries/Image/TextInlineImageNativeComponent.js @@ -10,90 +10,32 @@ 'use strict'; -import type {ResolvedAssetSource} from './AssetSourceResolver'; import type {HostComponent} from '../Renderer/shims/ReactNativeTypes'; -import type {ImageProps} from './ImageProps'; import type {ViewProps} from '../Components/View/ViewPropTypes'; +import type {ImageResizeMode} from './ImageResizeMode'; import * as NativeComponentRegistry from '../NativeComponent/NativeComponentRegistry'; -import type { - ColorValue, - DangerouslyImpreciseStyle, - ImageStyleProp, -} from '../StyleSheet/StyleSheet'; +import type {ColorValue} from '../StyleSheet/StyleSheet'; -type Props = $ReadOnly<{ - ...ImageProps, +type NativeProps = $ReadOnly<{ ...ViewProps, - - style?: ImageStyleProp | DangerouslyImpreciseStyle, - - // iOS native props - tintColor?: ColorValue, - - // Android native props - shouldNotifyLoadEvents?: boolean, - src?: ?ResolvedAssetSource | $ReadOnlyArray<{uri: string, ...}>, - headers?: ?string, - defaultSrc?: ?string, - loadingIndicatorSrc?: ?string, - internal_analyticTag?: ?string, + resizeMode?: ?ImageResizeMode, + src?: ?$ReadOnlyArray>, + tintColor?: ?ColorValue, + headers?: ?{[string]: string}, }>; -const TextInlineImage: HostComponent = - NativeComponentRegistry.get('RCTTextInlineImage', () => ({ +const TextInlineImage: HostComponent = + NativeComponentRegistry.get('RCTTextInlineImage', () => ({ uiViewClassName: 'RCTTextInlineImage', bubblingEventTypes: {}, - directEventTypes: { - topLoadStart: { - registrationName: 'onLoadStart', - }, - topProgress: { - registrationName: 'onProgress', - }, - topError: { - registrationName: 'onError', - }, - topPartialLoad: { - registrationName: 'onPartialLoad', - }, - topLoad: { - registrationName: 'onLoad', - }, - topLoadEnd: { - registrationName: 'onLoadEnd', - }, - }, + directEventTypes: {}, validAttributes: { - blurRadius: true, - capInsets: { - diff: require('../Utilities/differ/insetsDiffer'), - }, - defaultSource: { - process: require('./resolveAssetSource'), - }, - defaultSrc: true, - fadeDuration: true, - headers: true, - internal_analyticTag: true, - loadingIndicatorSrc: true, - onError: true, - onLoad: true, - onLoadEnd: true, - onLoadStart: true, - onPartialLoad: true, - onProgress: true, - overlayColor: { - process: require('../StyleSheet/processColor'), - }, - progressiveRenderingEnabled: true, - resizeMethod: true, resizeMode: true, - shouldNotifyLoadEvents: true, - source: true, src: true, tintColor: { process: require('../StyleSheet/processColor'), }, + headers: true, }, })); diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageShadowNode.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageShadowNode.java index 801e0b0703d..65d83c2a536 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageShadowNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageShadowNode.java @@ -73,7 +73,7 @@ public class FrescoBasedReactTextInlineImageShadowNode extends ReactTextInlineIm mHeaders = headers; } - @ReactProp(name = "tintColor") + @ReactProp(name = "tintColor", customType = "Color") public void setTintColor(int tintColor) { mTintColor = tintColor; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java index 67898c7f7e3..9e0cc7998c4 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java @@ -12,8 +12,8 @@ import androidx.annotation.Nullable; 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; -import com.facebook.react.uimanager.ViewManager; /** * Manages Images embedded in Text nodes using Fresco. Since they are used only as a virtual nodes @@ -21,7 +21,7 @@ import com.facebook.react.uimanager.ViewManager; */ @ReactModule(name = FrescoBasedReactTextInlineImageViewManager.REACT_CLASS) public class FrescoBasedReactTextInlineImageViewManager - extends ViewManager { + extends BaseViewManager { public static final String REACT_CLASS = "RCTTextInlineImage";