@@ -4,12 +4,12 @@ import { useBottomTabBarHeight } from "@react-navigation/bottom-tabs"
4
4
import { useHeaderHeight } from "@react-navigation/elements"
5
5
import type { MasonryFlashListProps } from "@shopify/flash-list"
6
6
import { MasonryFlashList } from "@shopify/flash-list"
7
+ import { Image } from "expo-image"
7
8
import { Link } from "expo-router"
8
9
import { useContext } from "react"
9
10
import { Pressable , View } from "react-native"
10
11
import { useSafeAreaInsets } from "react-native-safe-area-context"
11
12
12
- import { ReAnimatedExpoImage } from "@/src/components/common/AnimatedComponents"
13
13
import { NavigationContext } from "@/src/components/common/SafeNavigationScrollView"
14
14
import { ThemedText } from "@/src/components/common/ThemedText"
15
15
import { ItemPressable } from "@/src/components/ui/pressable/item-pressable"
@@ -64,6 +64,7 @@ function RenderEntryItem({ id }: { id: string }) {
64
64
const photo = item . media ?. find ( ( media ) => media . type === "photo" )
65
65
const video = item . media ?. find ( ( media ) => media . type === "video" )
66
66
const imageUrl = photo ?. url || video ?. preview_image_url
67
+ const blurhash = photo ?. blurhash || video ?. blurhash
67
68
const aspectRatio =
68
69
view === FeedViewType . Pictures && photo ?. height && photo . width
69
70
? photo . width / photo . height
@@ -74,14 +75,16 @@ function RenderEntryItem({ id }: { id: string }) {
74
75
< Link href = { `/entries/${ item . id } ` } asChild >
75
76
< Pressable >
76
77
{ imageUrl ? (
77
- < ReAnimatedExpoImage
78
+ < Image
78
79
source = { { uri : imageUrl } }
80
+ placeholder = { {
81
+ blurhash,
82
+ } }
79
83
style = { {
80
84
width : "100%" ,
81
85
aspectRatio,
82
86
} }
83
- sharedTransitionTag = { `entry-image-${ imageUrl } ` }
84
- allowDownscaling = { false }
87
+ placeholderContentFit = "cover"
85
88
recyclingKey = { imageUrl }
86
89
/>
87
90
) : (
0 commit comments