about summary refs log tree commit diff
path: root/src/view/com/lightbox/ImageViewing/hooks/useImageIndexChange.ts
blob: 16430f3aaa584213bcaf45d7ba633223843da46a (plain) (blame)
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
/**
 * 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