import type { FetchResponse } from "ofetch";
import type { ApiResponse } from "~/types/ApiResponse";

export const useApiFetch = <T>(url: string, opts: any = {}) => {
  const config = useRuntimeConfig();
  const token = useCookie("crm_token");
  const api = $fetch.create({
    baseURL: config.public.apiBase,
    headers: {
      Accept: "application/json",
      Authorization: token.value ? `Bearer ${token.value}` : "",
    },
    async onResponseError({
      response,
    }: {
      response: FetchResponse<any>;
    }) {
      const { swal } = useMessageSwal();

      swal.fire({
        title: "Ha ocurrido un error",
        text: response._data?.message,
        icon: "error",
      });

      console.log("API error response:", response);

      if (response.status === 401) {
        token.value = null;
        //return { unauthorized: true };
      }
    },
  });

  return api<T>(url, opts);
};