import React, { FunctionComponent, useState, useCallback, useRef } from 'react'; import { TouchableOpacity, FlatList } from 'react-native'; import { Box } from '../Box'; import { Typography } from '../Typography'; import * as Styled from './ScreenshotPreview.style'; import type { IScreenshotPreviewProps } from './ScreenshotPreview.types'; export const ScreenshotPreview: FunctionComponent = ({ uri, ...imageProps }) => { const [pageNumber, setPageNumber] = useState(1); const flatListRef = useRef(null); const Button = useCallback( (right: boolean) => { return ( { flatListRef.current?.scrollToIndex({ index: (right ? pageNumber + 1 : pageNumber - 1) - 1, animated: true, }); setPageNumber(right ? pageNumber + 1 : pageNumber - 1); }} > {right ? pageNumber + 1 : pageNumber - 1} ); }, [pageNumber] ); if (Array.isArray(uri)) { return ( {pageNumber + 1 <= uri.length && Button(true)} {pageNumber - 1 > 0 && Button(false)} { const newPageNumber = Math.round(contentOffset.x / layoutMeasurement.width) + 1; if (newPageNumber === pageNumber) return; setPageNumber(newPageNumber); }} showsHorizontalScrollIndicator={false} pagingEnabled renderItem={({ item, index }) => { return ( ); }} /> ); } return ( ); };