import Styles from "@/constants/Styles"; import { apiGetDataHome } from "@/lib/api"; import { useAuthSession } from "@/providers/AuthProvider"; import { useTheme } from "@/providers/ThemeProvider"; import { useEffect, useState } 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 [loading, setLoading] = useState(true) const { decryptToken, token } = useAuthSession() const { colors } = useTheme(); const [data, setData] = useState([]) const [maxValue, setMaxValue] = useState(5) const [chartKey, setChartKey] = useState(0) const barData = [ { value: 23, label: 'Gambar', frontColor: '#fac858' }, { value: 12, label: 'Dokumen', frontColor: '#92cc76' }, ]; const width = Dimensions.get("window").width; async function handleData(loading: boolean) { try { setLoading(loading) const hasil = await decryptToken(String(token?.current)) const response = await apiGetDataHome({ cat: "dokumen", user: hasil }) const maxVal = response.data.reduce((max: number, obj: { value: number; }) => Math.max(max, Number(obj.value)), 0); const roundUp = maxVal > 0 ? Math.ceil(maxVal / 10) * 10 : 10; setMaxValue(roundUp) const convertedArray = response.data.map((item: { color: any; label: any; value: any; }) => ({ frontColor: item.color, label: item.label, value: Number(item.value) })); setData(convertedArray) setChartKey((prev: number) => prev + 1) } catch (error) { console.error(error) } finally { setLoading(false) } } useEffect(() => { if (refreshing) { handleData(false) } }, [refreshing]); useEffect(() => { handleData(true) }, []); return ( JUMLAH DOKUMEN { loading ? : { return ( {item.value} ); }} /> } ) }