import {memo} from 'react' import {useWindowDimensions, View} from 'react-native' import Animated, { interpolateColor, type SharedValue, useAnimatedStyle, } from 'react-native-reanimated' import {type $Typed, type AppBskyEmbedRecord} from '@atproto/api' import {atoms as a, native, useTheme, web} from '#/alf' import {Embed, PostEmbedViewContext} from '#/components/Post/Embed' import {MessageContextProvider} from './MessageContext' const BORDER_RADIUS = 20 const SQUARED_BORDER_RADIUS = 4 let MessageItemEmbed = ({ embed, isFromSelf, isGroupChat, squaredTopCorner, squaredBottomCorner, highlightSV, }: { embed: $Typed isFromSelf: boolean isGroupChat: boolean squaredTopCorner: boolean squaredBottomCorner: boolean highlightSV: SharedValue }): React.ReactNode => { const t = useTheme() const screen = useWindowDimensions() const restingColor = isFromSelf ? t.palette.primary_50 : t.palette.contrast_50 const highlightColor = isFromSelf ? t.palette.primary_300 : t.palette.primary_100 const highlightStyle = useAnimatedStyle(() => ({ backgroundColor: interpolateColor( highlightSV.get(), [0, 1], [restingColor, highlightColor], ), })) const radiiStyle = isFromSelf ? { borderBottomRightRadius: squaredBottomCorner ? SQUARED_BORDER_RADIUS : BORDER_RADIUS, borderTopRightRadius: squaredTopCorner ? SQUARED_BORDER_RADIUS : BORDER_RADIUS, } : { borderBottomLeftRadius: squaredBottomCorner ? SQUARED_BORDER_RADIUS : BORDER_RADIUS, borderTopLeftRadius: squaredTopCorner ? SQUARED_BORDER_RADIUS : BORDER_RADIUS, } return ( ) } MessageItemEmbed = memo(MessageItemEmbed) export {MessageItemEmbed}