import Styles from "@/constants/Styles"; import { apiGetDataHome } from "@/lib/api"; import { useAuthSession } from "@/providers/AuthProvider"; import { useTheme } from "@/providers/ThemeProvider"; import { useQuery } from "@tanstack/react-query"; import { useMemo } from "react"; import { Dimensions, View } from "react-native"; import { BarChart } from "react-native-gifted-charts"; import Skeleton from "../skeleton"; import Text from "../Text"; type Props = { value: number; label: string; frontColor: string; }[] export default function ChartDokumenHome({ refreshing }: { refreshing: boolean }) { const { decryptToken, token } = useAuthSession() const { colors } = useTheme(); const width = Dimensions.get("window").width; // TanStack Query for Document Chart data const { data: chartData = [], isLoading } = useQuery({ queryKey: ['homeData', 'dokumen'], queryFn: async () => { const hasil = await decryptToken(String(token?.current)) const response = await apiGetDataHome({ cat: "dokumen", user: hasil }) return response.data.map((item: { color: any; label: any; value: any; }) => ({ frontColor: item.color, label: item.label, value: Number(item.value) })) as Props }, enabled: !!token?.current, staleTime: 0, }) // Derived state for maxValue const maxValue = useMemo(() => { const maxVal = chartData.reduce((max: number, obj: { value: number; }) => Math.max(max, obj.value), 0); return maxVal > 0 ? Math.ceil(maxVal / 10) * 10 : 10; }, [chartData]); return ( JUMLAH DOKUMEN { isLoading ? : { return ( {item.value} ); }} /> } ) }