import { CountryList, LanguageList } from "./../../components/home/home.type";
import { seriesListByCategory } from "@/components/categories/categories.type";
import { HomeCarousalData, SliderItem } from "@/components/home/home.type";
import useFetchData from "@/hook/api-request/use-fetch-data";
import usePostData from "@/hook/api-request/use-post-data";
import API from "@/instance/api";

export const useHomeSeriesCarousalData = (
  params: {
    country?: string;
    language?: string;
  },
  options?: { enabled?: boolean }
) => {
  return useFetchData<HomeCarousalData>({
    url: API.home.seriesCarousal,
    params,
    enabled: options?.enabled ?? true,
    staleTime: 5 * 60 * 1000,
  });
};

export const useHomeSeriesSliderData = () => {
  return useFetchData<SliderItem[]>({
    url: API.home.seriesSlider,
  });
};

export const useLanguageList = () => {
  return useFetchData<LanguageList[]>({
    url: API.home.languageList,
  });
};
export const useCountryList = () => {
  return useFetchData<CountryList[]>({
    url: API.home.countryList,
  });
};

export const useReminder = () => {
  return usePostData({
    url: API.profile.reminder,
    showToast: false,
  });
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const useRecommendationsCarousalData = (session: any) => {
  return useFetchData<HomeCarousalData>({
    url: API.home.recommendations,
    enabled: !!session,
  });
};

export const useTopTenSeries = (
  params: {
    languageId?: string;
    countryId?: string;
  },
  options?: { enabled?: boolean }
) => {
  return useFetchData<seriesListByCategory>({
    url: API.categories.seriesListByCategory,
    params: {
      category: "popular",
      page: 1,
      limit: 10,
      ...params,
    },
    enabled: options?.enabled ?? true,
    staleTime: 5 * 60 * 1000,
  });
};

export const useLibrarySeries = (
  params: {
    category?: string;
    languageId?: string;
    countryId?: string;
  },
  options?: { enabled?: boolean }
) => {
  return useFetchData<seriesListByCategory>({
    url: API.categories.seriesListByCategory,
    params: {
      page: 1,
      limit: 24,
      ...params,
    },
    enabled: options?.enabled ?? true,
    staleTime: 5 * 60 * 1000,
  });
};

