"use client";
import { useQuery } from "@tanstack/react-query";
import axios from "axios";
import { useLanguage } from "@/store/language-context";

const fetcher = async (url: string) => {
    const response = await axios.get(url);
    return response.data?.data?.data;
};

export const useAllLists = ({ includeWhat = [], perPage = 150 }) => {
    const { URL } = useLanguage();
    const { data: cities, isLoading: cLoad, error: cErr } = includeWhat.includes('cities')
        ? useQuery({
            queryKey: ['cities', perPage, URL],
            queryFn: () => fetcher(`${URL}/cities?per_page=${perPage}`),
            staleTime: 15 * 60 * 1000, // 15 min
            gcTime: 30 * 60 * 1000, // 30 min
        }) : {};

    const { data: categories, isLoading: catLoad, error: catErr } = includeWhat.includes('categories')
        ? useQuery({
            queryKey: ['categories', perPage, URL],
            queryFn: () => fetcher(`${URL}/categories?per_page=${perPage}`),
            staleTime: 15 * 60 * 1000, // 15 min
            gcTime: 30 * 60 * 1000, // 30 min
        }) : {};


    const { data: dependencies, isLoading: dLoad, error: dErr } = includeWhat.includes('dependencies')
        ? useQuery({
            queryKey: ['dependencies', perPage, URL],
            queryFn: () => fetcher(`${URL}/dependencies?per_page=${perPage}`),
            staleTime: 15 * 60 * 1000, // 15 min
            gcTime: 30 * 60 * 1000, // 30 min
        }) : {};

    return {
        cities, cErr, cLoad,
        categories, catErr, catLoad,
        dependencies, dLoad, dErr,
        refetchCities: cities?.refetch,
        refetchCategories: categories?.refetch,
        refetchDependencies: dependencies?.refetch,
    }
};
