import { createRouter, createWebHistory } from "vue-router";
import { staticRouter } from "@/router/staticRouters.ts";
import { message, Modal } from "ant-design-vue";
import { useUserStore } from "@/stores/modules/userStore.ts";
import { ROUTER_WHITE_LIST } from "@/config";

/**
 * createWebHistory & createWebHashHistory
 * createWebHistory: 路径不带#号，但需要后端进行配置（如nginx配置:try_files $uri $uri/ /index.html last;）
 * createWebHashHistory: 路径带#号 这部分 URL 从未被发送到服务器，所以它不需要在服务器层面上进行任何特殊处理，影响SEO
 */
const router = createRouter({
    history: createWebHistory('/policeManagement/'),
    routes: [...staticRouter],
    strict: false,
    scrollBehavior: () => ({ left: 0, top: 0 })
});

// const ROUTER_WHITE_LIST = ['/login', '/registerIndex']; // 将 '/registerIndex' 添加到白名单
router.beforeEach(async (to, from, next) => {
    Modal.destroyAll();
    //判断访问的是不是登录页
    const userStore = useUserStore();
    if (to.path.toLocaleLowerCase() === '/login' && userStore.getTokenInfo?.value) {
        //如果已登录 且访问login页面 直接返回当前页面
        await message.warn('当前已登录，请先退出账号');
        return next(from.fullPath)
    }
    //判断访问路径是不是白名单d
    // console.log('访问路径', to.path);

    if (ROUTER_WHITE_LIST.includes(to.path)) {
        return next();
    } else {
        //不在白名单内需要查看是否携带token 没有token需要返回登录页进行登录
        if (!userStore.getTokenInfo?.value) {
            await message.warn('未找到token，请重新登陆!')
            return next('/login');
        }
    }


    return next();
})

router.onError(error => {
    console.error("路由错误", error.message);
})

export default router
