import useRequest from "@/lib/app/hooks/useRequest";
import useSWR from "swr";
import {useState} from "react";

const useChart = (chart_url) => {
    const requestServer = useRequest({auth: true, notification: false})
    const [filterOption, setFilterOption] = useState([]);
    const queryString = filterOption.length !== 0
        ? `?${filterOption.map((option) => `${option.key}=${option.value}`).join('&')}`
        : '';
    //swr config
    const fetcher = (...args) => {
        return requestServer(args, 'get').then(({data}) => {
            return data.data;
        }).catch(() => {
        })
    };

    const {
        data,
        isValidating,
        mutate
    } = useSWR(filterOption.length !== 0 ? `${chart_url}${queryString}` : "", fetcher, {
        revalidateIfStale: false,
        revalidateOnFocus: false,
        revalidateOnReconnect: false,
        keepPreviousData: true
    });

    return {
        reportList: data,
        isLoadingReportList: isValidating,
        errorReportList: !data,
        setFilterOption: setFilterOption,
        mutate: mutate
    }
};

export default useChart;