/* eslint-disable react-hooks/exhaustive-deps */ import { BaseBox, OS_Wrapper, ProgressCustom, StackCustom, TextCustom } from "@/components"; import { PADDING_INLINE } from "@/constants/constans-value"; 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 { apiInvestmentGetAll } from "@/service/api-client/api-investment"; import { formatCurrencyDisplay } from "@/utils/formatCurrencyDisplay"; import { router, useFocusEffect } from "expo-router"; import { useCallback } from "react"; import { RefreshControl } from "react-native"; export default function Investment_ScreenMyHolding() { const { user } = useAuth(); const pagination = usePagination({ fetchFunction: async (page) => { return await apiInvestmentGetAll({ category: "my-holding", authorId: user?.id, page: String(page), }); }, pageSize: PAGINATION_DEFAULT_TAKE, dependencies: [user?.id], onError: (error) => console.error("[ERROR] Fetch my holding:", error), }); useFocusEffect( useCallback(() => { pagination.onRefresh(); }, [user?.id]), ); const renderItem = ({ item, index }: { item: any; index: number }) => ( router.push(`/investment/${item?.id}/(my-holding)/${item?.id}`) } > {item?.title} Rp. {formatCurrencyDisplay(item?.nominal)} {item?.lembarTerbeli} Lembar ); const { ListEmptyComponent, ListFooterComponent } = createPaginationComponents({ loading: pagination.loading, refreshing: pagination.refreshing, listData: pagination.listData, isInitialLoad: pagination.isInitialLoad, emptyMessage: "Tidak ada investasi yang dimiliki", skeletonCount: PAGINATION_DEFAULT_TAKE, skeletonHeight: 120, }); return ( } hideFooter /> ); }