import React, { useCallback, useState, useEffect } from 'react'; import { View, FlatList, ActivityIndicator, RefreshControl, Text } from 'react-native'; import Animated, { FadeInDown, FadeOutUp } from 'react-native-reanimated'; import { useNavigation } from '@react-navigation/native'; import { useFetchLiveAuction, useFetchLiveTender } from '../../Services/ApiCall/Hooks'; import { SearchInput } from '../../Component/Serach/SeacrhInput'; import { Skelton } from '../../Component/Index'; import colors from '../../Constant/Color'; import { useDispatch, useSelector } from 'react-redux'; import { togglePurchaseTender } from '../../Redux/Slices/SelectedPurchaseTender'; import LiveTenderTile from './LiveTenderTile'; const LiveTender = () => { const navigation: any = useNavigation(); const Dispatch = useDispatch() const user = useSelector((state: any) => state?.token.token); const SelectedPurchaseList = useSelector((state: any) => state.selectPurchaseTender); const { data, fetchNextPage, hasNextPage, isFetchingNextPage, isLoading, isRefetching, refetch }: any = useFetchLiveTender(); const [showRefreshBanner, setShowRefreshBanner] = useState(false); useEffect(() => { if (isRefetching) { setShowRefreshBanner(true); } else { const timer = setTimeout(() => { setShowRefreshBanner(false); }, 1000); return () => clearTimeout(timer); } }, [isRefetching]); const loadMore = useCallback(() => { if (hasNextPage && !isFetchingNextPage) { fetchNextPage(); } }, [hasNextPage, isFetchingNextPage]); const renderFooter = useCallback(() => { if (!isFetchingNextPage) return null; return ( ); }, [isFetchingNextPage]); const renderItem = useCallback( ({ item, index }: any) => { if(item.tenderStatus==="Cancelled") return null; const isPurchase = SelectedPurchaseList.findIndex((prev: any) => prev.tenderId === item.tenderId) return { Dispatch(togglePurchaseTender(item)) }} onDetailsPress={() => navigation.navigate('LiveTenderDetail', { item })} /> }, [SelectedPurchaseList] ); if (isLoading) { return ; } return ( { }} placeholder="Search...." /> {showRefreshBanner && ( Refreshing Tender )} String(item.tenderId)} renderItem={renderItem} showsVerticalScrollIndicator={false} contentContainerStyle={{ paddingBottom: 50, paddingTop: 10 }} onEndReached={loadMore} onEndReachedThreshold={0.2} ListFooterComponent={renderFooter} refreshControl={ } initialNumToRender={6} maxToRenderPerBatch={6} windowSize={7} removeClippedSubviews updateCellsBatchingPeriod={50} onRefresh={refetch} refreshing={isRefetching} /> ); }; export default LiveTender;