Move useImageDimensions into image-sizes

This commit is contained in:
Dan Abramov
2024-11-01 02:17:40 +00:00
parent fe33a21d3e
commit 6b478644e2
2 changed files with 31 additions and 33 deletions
+30
View File
@@ -1,3 +1,4 @@
import {useEffect,useState} from 'react'
import {Image} from 'react-native'
import type {Dimensions} from '#/lib/media/types'
@@ -53,3 +54,32 @@ export function fetch(uri: string): Promise<Dimensions> {
activeRequests.set(uri, prom)
return prom
}
export function useImageDimensions({
src,
knownDimensions,
}: {
src: string
knownDimensions: Dimensions | undefined
}) {
const [dims, setDims] = useState(() => knownDimensions ?? get(src))
const [prevSrc, setPrevSrc] = useState(src)
if (src !== prevSrc) {
setDims(knownDimensions ?? get(src))
setPrevSrc(src)
}
useEffect(() => {
let aborted = false
if (dims !== undefined) return
fetch(src).then(newDims => {
if (aborted) return
setDims(newDims)
})
return () => {
aborted = true
}
}, [dims, setDims, src])
return dims
}