Skip to content

Commit 2137de9

Browse files
committed
useImageDimensions failure param is optional now
1 parent acf539a commit 2137de9

File tree

2 files changed

+26
-27
lines changed

2 files changed

+26
-27
lines changed

README.md

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -108,23 +108,21 @@ const screen = useDimensions().screen
108108
### `useImageDimensions`
109109

110110
```js
111-
import { useImageDimensions } from '@react-native-community/hooks'
111+
import {useImageDimensions} from '@react-native-community/hooks'
112112

113-
const assetSource = require('./assets/yourImage.png')
114-
const uriSource = { uri: 'https://your.image.URI' }
115-
const mixedSources = [assetSource, uriSource]
116-
117-
const dimensions = useImageDimensions(assetSource)
113+
const dimensions = useImageDimensions(require('./assets/yourImage.png'))
118114
// or
119-
const dimensions = useImageDimensions(uriSource, () => console.error('Loading failure ...'))
115+
const dimensions = useImageDimensions({uri: 'https://your.image.URI'})
120116
// or
121-
const dimensions = useImageDimensions(mixedSources[i], () => console.error('Loading failure ...'))
117+
const dimensions = useImageDimensions({uri: 'https://your.image.URI'}, error => {
118+
onImageFetchFailure(error)
119+
})
122120

123-
if (typeof dimensions === 'undefined') {
121+
if (!dimensions) {
124122
return null
125123
}
126124

127-
const { width, height } = dimensions
125+
const {width, height} = dimensions
128126
```
129127

130128
### `useKeyboard`

src/useImageDimensions.ts

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,30 @@ import {Image, ImageRequireSource} from 'react-native'
44
export interface URISource {
55
uri: string
66
}
7-
type ImageDimensions =
8-
| {
9-
width: number
10-
height: number
11-
}
12-
| undefined
7+
8+
type ImageDimensions = {
9+
width: number
10+
height: number
11+
} | null
1312
type FailureCallback = (error: any) => void
1413

1514
/**
16-
* @param source A local file resource.
15+
* @param source local file resource.
1716
* @returns Original image width and height.
1817
*/
1918
function useImageDimensions(source: ImageRequireSource): ImageDimensions
2019
/**
21-
* @param source A remote URL
22-
* @param failure The function that will be called if there was an error, such as failing to retrieve the image (see https://reactnative.dev/docs/image#getsize).
20+
* @param source remote URL
21+
* @param failure the function that will be called if there was an error, such as failing to retrieve the image (see https://reactnative.dev/docs/image#getsize).
2322
* @returns Original image width and height.
2423
*/
2524
function useImageDimensions(
2625
source: URISource,
27-
failure: FailureCallback,
26+
failure?: FailureCallback,
2827
): ImageDimensions
2928
function useImageDimensions(
3029
source: ImageRequireSource | URISource,
31-
failure: FailureCallback,
30+
failure?: FailureCallback,
3231
): ImageDimensions
3332
function useImageDimensions(
3433
source: ImageRequireSource | URISource,
@@ -37,16 +36,18 @@ function useImageDimensions(
3736
const [dimensions, setDimensions] = useState<ImageDimensions>()
3837
useEffect(() => {
3938
if (typeof source === 'object') {
40-
if (!failure) {
41-
throw new Error(
42-
'"failure" callback parameter is required in case when URI source is using.',
43-
)
44-
}
4539
const {uri} = source
4640
Image.getSize(
4741
uri,
4842
(width, height) => setDimensions({width, height}),
49-
failure,
43+
error => {
44+
setDimensions(null)
45+
if (failure) {
46+
failure(error)
47+
} else {
48+
console.error(error)
49+
}
50+
},
5051
)
5152
} else {
5253
setDimensions(Image.resolveAssetSource(source))

0 commit comments

Comments
 (0)