/* eslint-disable react-hooks/exhaustive-deps */ import { ScrollableCustom } from "@/components"; import NewWrapper from "@/components/_ShareComponent/NewWrapper"; import { MainColor } from "@/constants/color-palet"; import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value"; import { createPaginationComponents } from "@/helpers/paginationHelpers"; import { useAuth } from "@/hooks/use-auth"; import { usePagination } from "@/hooks/use-pagination"; import { dummyMasterStatus } from "@/lib/dummy-data/_master/status"; import Donasi_BoxStatus from "@/screens/Donation/BoxStatus"; import { apiDonationGetByStatus } from "@/service/api-client/api-donation"; import { useFocusEffect } from "expo-router"; import { useCallback, useState } from "react"; import { RefreshControl } from "react-native"; interface DonationStatusProps { initialStatus?: string; } export default function Donation_ScreenStatus({ initialStatus = "publish", }: DonationStatusProps) { const { user } = useAuth(); const [activeCategory, setActiveCategory] = useState( initialStatus, ); const pagination = usePagination({ fetchFunction: async (page) => { return await apiDonationGetByStatus({ authorId: user?.id as string, status: activeCategory as string, page: String(page), }); }, pageSize: PAGINATION_DEFAULT_TAKE, // Sesuaikan dengan jumlah item per halaman dari API dependencies: [user?.id, activeCategory], }); useFocusEffect( useCallback(() => { pagination.onRefresh(); }, [user?.id, activeCategory]), ); const handlePress = (item: any) => { setActiveCategory(item.value); pagination.reset(); }; const scrollComponent = ( ({ id: i, label: e.label, value: e.value, }))} onButtonPress={handlePress} activeId={activeCategory as any} /> ); const renderItem = ({ item, index }: { item: any; index: number }) => ( ); const { ListEmptyComponent, ListFooterComponent } = createPaginationComponents({ loading: pagination.loading, refreshing: pagination.refreshing, listData: pagination.listData, isInitialLoad: pagination.isInitialLoad, emptyMessage: `Tidak ada data ${activeCategory}`, skeletonCount: 5, skeletonHeight: 120, }); return ( } hideFooter headerComponent={scrollComponent} /> ); }