// 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({ options }) {
            showLoadingToast({
                message: "加载中...",
                forbidClick: true,
                duration: 0, // 设置为 0 表示不会自动关闭
                loadingType: "spinner",
            });
            // 获取平台信息

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

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

            if (data.code !== 200) {
                if (data.code === 100009) {
                    // 改进的存储管理
                    localStorage.removeItem('token')

                    // 重置状态
                    location.reload()

                }
                if (data.code !== 200002 && data.code !== 200003 && data.code !== 200004 && data.code !== 100009) {
                    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;
