/* eslint-disable react-hooks/exhaustive-deps */ import { ButtonCustom, Spacing, TextCustom } from "@/components"; import NewWrapper from "@/components/_ShareComponent/NewWrapper"; import { AccentColor, 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 Voting_BoxPublishSection from "@/screens/Voting/BoxPublishSection"; import { apiVotingGetAll } from "@/service/api-client/api-voting"; import { useState } from "react"; import { RefreshControl, View } from "react-native"; export default function Voting_ScreenHistory() { const [activeCategory, setActiveCategory] = useState("all"); const { user } = useAuth(); // Setup pagination const pagination = usePagination({ fetchFunction: async (page) => { return await apiVotingGetAll({ category: activeCategory === "all" ? "all-history" : "my-history", authorId: user?.id as string, page: String(page), }); }, pageSize: PAGINATION_DEFAULT_TAKE, dependencies: [user?.id, activeCategory], onError: (error) => console.error("[ERROR] Fetch voting history:", error), }); // Generate komponen const { ListEmptyComponent, ListFooterComponent } = createPaginationComponents({ loading: pagination.loading, refreshing: pagination.refreshing, listData: pagination.listData, emptyMessage: "Belum ada riwayat", skeletonCount: PAGINATION_DEFAULT_TAKE, skeletonHeight: 100, }); // Render item voting const renderVotingItem = ({ item }: { item: any }) => ( ); const handlePress = (item: any) => { setActiveCategory(item); // Reset pagination saat kategori berubah pagination.reset(); }; const headerComponent = ( handlePress("all")} > Semua Riwayat handlePress("main")} > Riwayat Saya ); return ( } onEndReached={pagination.loadMore} ListEmptyComponent={ListEmptyComponent} ListFooterComponent={ListFooterComponent} hideFooter /> ); }