import {
  categoryList,
  seriesListByCategory,
} from "@/components/categories/categories.type";
import { SeriesItem } from "@/components/home/home.type";
import useFetchData from "@/hook/api-request/use-fetch-data";
import { useInfiniteFetchData } from "@/hook/api-request/use-infinite-fetchData";
import API from "@/instance/api";

export const useCategoryList = () => {
  return useFetchData<categoryList[]>({
    url: API.categories.list,
    staleTime: Infinity,
  });
};

// export const useSeriesListByCategory = (params: { category: string }) => {
//   return useFetchData<seriesListByCategory>({
//     url: API.categories.seriesListByCategory,
//     params,
//     enabled: !!params.category,
//   });
// };
export const useSeriesListByCategory = (
  params: {
    category: string;
    countryId?: string;
    languageId?: string;
  },
  options?: { enabled?: boolean }
) => {
  return useInfiniteFetchData<seriesListByCategory>({
    url: API.categories.seriesListByCategory,
    params,
    enabled: !!params.category && (options?.enabled ?? true),
    limit: 12,
  });
};

// Unpaginated variant: the API returns a flat array when pagination=false.
export const useSeriesListByCategoryAll = (
  params: {
    category: string;
    countryId?: string;
    languageId?: string;
  },
  options?: { enabled?: boolean }
) => {
  return useFetchData<SeriesItem[]>({
    url: API.categories.seriesListByCategory,
    params: { ...params, pagination: false },
    enabled: !!params.category && (options?.enabled ?? true),
  });
};
