11import * as React from 'react'
22import {
33 Image ,
4+ LayoutAnimation ,
45 LayoutChangeEvent ,
56 Linking ,
67 StyleProp ,
@@ -18,6 +19,7 @@ import { getPreviewData, oneOf } from './utils'
1819
1920export interface LinkPreviewProps {
2021 containerStyle ?: StyleProp < ViewStyle >
22+ enableAnimation ?: boolean
2123 metadataContainerStyle ?: StyleProp < ViewStyle >
2224 metadataTextContainerStyle ?: StyleProp < ViewStyle >
2325 onPreviewDataFetched ?: ( previewData : PreviewData ) => void
@@ -40,6 +42,7 @@ export interface LinkPreviewProps {
4042export const LinkPreview = React . memo (
4143 ( {
4244 containerStyle,
45+ enableAnimation,
4346 metadataContainerStyle,
4447 metadataTextContainerStyle,
4548 onPreviewDataFetched,
@@ -69,6 +72,11 @@ export const LinkPreview = React.memo(
6972 // Set data only if component is still mounted
7073 /* istanbul ignore next */
7174 if ( ! isCancelled ) {
75+ // No need to cover LayoutAnimation
76+ /* istanbul ignore next */
77+ if ( enableAnimation ) {
78+ LayoutAnimation . easeInEaseOut ( )
79+ }
7280 setData ( newData )
7381 onPreviewDataFetched ?.( newData )
7482 }
@@ -78,7 +86,7 @@ export const LinkPreview = React.memo(
7886 return ( ) => {
7987 isCancelled = true
8088 }
81- } , [ onPreviewDataFetched , previewData , text ] )
89+ } , [ enableAnimation , onPreviewDataFetched , previewData , text ] )
8290
8391 const handleContainerLayout = React . useCallback (
8492 ( event : LayoutChangeEvent ) => {
0 commit comments