import React from 'react' import {Dimensions, ScrollView, View} from 'react-native' import {msg, Plural} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useEnableSquareButtons} from '#/state/preferences/enable-square-buttons' import {type FeedPostSlice} from '#/state/queries/post-feed' import {BlockDrawerGesture} from '#/view/shell/BlockDrawerGesture' import {atoms as a, useTheme} from '#/alf' import {Button, ButtonIcon} from '#/components/Button' import { ChevronLeft_Stroke2_Corner0_Rounded as ChevronLeft, ChevronRight_Stroke2_Corner0_Rounded as ChevronRight, } from '#/components/icons/Chevron' import {Text} from '#/components/Typography' import {PostFeedItem} from './PostFeedItem' const CARD_WIDTH = 320 const CARD_INTERVAL = CARD_WIDTH + a.gap_md.gap export function PostFeedItemCarousel({items}: {items: FeedPostSlice[]}) { const t = useTheme() const {_} = useLingui() const ref = React.useRef(null) const [scrollX, setScrollX] = React.useState(0) const enableSquareButtons = useEnableSquareButtons() const scrollTo = React.useCallback( (item: number) => { setScrollX(item) ref.current?.scrollTo({ x: item * CARD_INTERVAL, y: 0, animated: true, }) }, [ref], ) const scrollLeft = React.useCallback(() => { const newPos = scrollX > 0 ? scrollX - 1 : items.length - 1 scrollTo(newPos) }, [scrollTo, scrollX, items.length]) const scrollRight = React.useCallback(() => { const newPos = scrollX < items.length - 1 ? scrollX + 1 : 0 scrollTo(newPos) }, [scrollTo, scrollX, items.length]) return ( {items.length}{' '} { setScrollX(Math.floor(e.nativeEvent.contentOffset.x / CARD_INTERVAL)) }} */ ref={ref}> {items.map(slice => { const item = slice.items[0] return ( ) })} ) }