import Request from "./request/index.js";
import useToast from "@/hooks/toast/useToast.js";
const { showMessage } = useToast();
const request = new Request({
  baseURL: import.meta.env.VITE_API_URL,
  timeout: 1000 * 60 * 5,
  interceptors: {
    //实例的请求拦截器
    requestInterceptors: (config) => {
      config.headers["Content-Type"] =
        config.method === "get"
          ? "application/x-www-form-urlencoded"
          : "application/json";

      const token = uni.getStorageSync("token") || "";
      if (config.isFormData) {
        config.headers["Content-Type"] = "multipart/form-data";
        config.headers["Authorization"] = token;
      } else {
        config.headers["Authorization"] = token;
      }
      return config;
    },
    //实例的响应拦截器
    responseInterceptors: async (response) => {
      if (response.data.status === 1) {
        showMessage({ type: "error", message: response.data.msg });
      }
      // if(response.data.status === 0){
      //   uni.setStorageSync("token", response.data.data.Token);
      //   uni.setStorageSync("userInfo", response.data.data.AccountInfo);
      //   response.config.headers["Authorization"] = response.data.data.Token;
      // }
      if (response.data.code === 401) {
        uni.clearStorageSync(); //清缓存
        const params = new URLSearchParams(window.location.search); //属性包含当前 URL 的查询字符串部分
        const id = params.get("id");
        const pid = params.get("pid");
        uni.navigateTo({
          url: "/pages/login/index?id=" + id + "&pid=" + pid,
        });
        return false;
      }
      if ([200, 201, 204].includes(response.status)) {
        return response.config.responseType === "blob" ? response : response;
      } else {
        // showMessage({ type: "error", message: response.data.msg });
        return Promise.reject(
          new Error(response.data.msg || "An error occurred.")
        );
      }
    },
  },
});

const fontRequest = (config) => {
  console.log(import.meta);

  if (["get", "GET"].includes(config.method)) {
    config.params = config.data;
  }
  return request.request(config);
};

export default fontRequest;