-
-
Notifications
You must be signed in to change notification settings - Fork 175
/
fast.tsx
40 lines (37 loc) · 1.06 KB
/
fast.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { ComponentProps } from 'react'
import FastImage from 'react-native-fast-image'
import { SolitoImageProps } from '../image.types'
import { useSolitoImage } from '../use-solito-image'
export default function SolitoFastImage(
props: Omit<SolitoImageProps, 'resizeMode' | 'style'> &
Pick<ComponentProps<typeof FastImage>, 'style' | 'resizeMode' | 'testID'>
) {
const {
source,
resizeMode,
onLoadingComplete,
onError,
style,
...imageProps
} = useSolitoImage(props as SolitoImageProps)
return (
<FastImage
source={
source && typeof source == 'object' && 'uri' in source
? {
priority: props.priority ? 'high' : 'normal',
cache: 'web',
headers: source.headers,
uri: source.uri,
}
: (source as number)
}
resizeMode={props.resizeMode}
onLoad={onLoadingComplete && ((e) => onLoadingComplete(e.nativeEvent))}
onError={onError}
// @ts-expect-error this is fine
style={style}
{...imageProps}
/>
)
}