// src/plugins/fetch.js
import { createFetch } from "@vueuse/core";
import router from "@/router"; // 假设你使用 Vue Router

// 创建全局的 fetch 实例
const useApiFetch = createFetch({
    baseUrl: "/api/v1", // 你的 API 基础路径
    options: {
        async beforeFetch({ url, options }) {
            showLoadingToast({
                message: "加载中...",
                forbidClick: true,
                duration: 0, // 设置为 0 表示不会自动关闭
                loadingType: "spinner",
            });

            const timestamp = Date.now();
            const separator = url.includes("?") ? "&" : "?"; // 判断是否已有参数
            url += `${separator}t=${timestamp}`; // 追加时间戳

            // 获取平台信息
            const brand = "tydata"; // 固定的品牌信息

            // 在请求前添加通用的 Header，例如 Authorization
            const token = localStorage.getItem("token");
            let platform = "h5";
            const userAgent = navigator.userAgent.toLowerCase();
            const isWechat = /micromessenger/.test(userAgent);
            if (isWechat) {
                platform = "h5-weixin";
            }
            if (token) {
                options.headers = {
                    ...options.headers,
                    "X-Platform": platform, // 添加平台信息
                    "X-Brand": brand, // 添加品牌信息
                    Authorization: `${token}`,
                };
            }
            return { url, options };
        },
        async afterFetch({ data, response }) {
            closeToast();
            // 全局处理响应
            if (response.status === 401) {
                // 清除本地存储的 token
                localStorage.removeItem("token");

                // 跳转到登录页
                router.replace("/login");
            }

            if (data.code !== 200) {
                if (data.code !== 200002 && data.code !== 200003) {
                    showToast({ message: data.msg });
                }
            }
            return { data, response };
        },
        async onFetchError({ error, response }) {
            console.log("error", error);
            closeToast();
            if (response.status === 401) {
                // 清除本地存储的 token
                localStorage.removeItem("token");

                // 跳转到登录页
                router.replace("/login");
            } else {
                if (typeof error === "string") {
                    showToast({ message: error });
                }
            }
            return { error };
        },
    },
});

export default useApiFetch;
