/* eslint-disable react-hooks/exhaustive-deps */ import { BaseBox, OS_Wrapper, TextCustom } from "@/components"; import { MainColor } from "@/constants/color-palet"; import { createPaginationComponents } from "@/helpers/paginationHelpers"; import { useAuth } from "@/hooks/use-auth"; import { usePagination } from "@/hooks/use-pagination"; import { apiJobGetAll } from "@/service/api-client/api-job"; import { useFocusEffect } from "expo-router"; import _ from "lodash"; import { useState } from "react"; import { RefreshControl } from "react-native"; import { PAGINATION_DEFAULT_TAKE, PADDING_INLINE } from "@/constants/constans-value"; export default function Job_ScreenArchive2() { const { user } = useAuth(); // Setup pagination const pagination = usePagination({ fetchFunction: async (page) => { if (!user?.id) return { data: [] }; return await apiJobGetAll({ category: "archive", authorId: user?.id, page: String(page), }); }, pageSize: PAGINATION_DEFAULT_TAKE, dependencies: [user?.id], onError: (error) => console.error("[ERROR] Fetch job archive:", error), }); // Generate komponen const { ListEmptyComponent, ListFooterComponent } = createPaginationComponents({ loading: pagination.loading, refreshing: pagination.refreshing, listData: pagination.listData, emptyMessage: "Anda tidak memiliki arsip", skeletonCount: PAGINATION_DEFAULT_TAKE, skeletonHeight: 80, }); // Render item job const renderJobItem = ({ item }: { item: any }) => ( {item?.title || "-"} ); return ( } onEndReached={pagination.loadMore} ListEmptyComponent={ListEmptyComponent} ListFooterComponent={ListFooterComponent} hideFooter contentPadding={PADDING_INLINE} /> ); }