diff options
Diffstat (limited to 'src/view/com/lightbox/ImageViewing/hooks/useImageIndexChange.ts')
-rw-r--r-- | src/view/com/lightbox/ImageViewing/hooks/useImageIndexChange.ts | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/view/com/lightbox/ImageViewing/hooks/useImageIndexChange.ts b/src/view/com/lightbox/ImageViewing/hooks/useImageIndexChange.ts new file mode 100644 index 000000000..16430f3aa --- /dev/null +++ b/src/view/com/lightbox/ImageViewing/hooks/useImageIndexChange.ts @@ -0,0 +1,32 @@ +/** + * Copyright (c) JOB TODAY S.A. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import {useState} from 'react' +import {NativeSyntheticEvent, NativeScrollEvent} from 'react-native' + +import {Dimensions} from '../@types' + +const useImageIndexChange = (imageIndex: number, screen: Dimensions) => { + const [currentImageIndex, setImageIndex] = useState(imageIndex) + const onScroll = (event: NativeSyntheticEvent<NativeScrollEvent>) => { + const { + nativeEvent: { + contentOffset: {x: scrollX}, + }, + } = event + + if (screen.width) { + const nextIndex = Math.round(scrollX / screen.width) + setImageIndex(nextIndex < 0 ? 0 : nextIndex) + } + } + + return [currentImageIndex, onScroll] as const +} + +export default useImageIndexChange |