import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
import { checkVersion } from "@/services/version";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { generateRoutes } from "@/utils/generateRoutes";
import { useUserInfo } from "@/composables/useUserInfo";
import request from "@/utils/request";
const routes = generateRoutes();

const router = createRouter({
  history: createWebHistory(),
  routes,
});

NProgress.configure({ showSpinner: false });

const { getUserInfo } = useUserInfo();

router.beforeEach(async (to, from, next) => {
  NProgress.start();
  document.title = (to.meta.title as string) || "Vue App";

  // 检查版本更新
  // if (process.env.NODE_ENV === "production") {
    // try {
    //   let result = await checkVersion();
    //   console.log(result);
    //   const { version } = await checkVersion();
      
    //   console.log(version);
    //   if (version) {
    //     const storedVersion = sessionStorage.getItem("app_version");
    //     if (version !== storedVersion) {
    //       sessionStorage.setItem("app_version", version);
    //       if (to.path !== "/login") {
    //         window.location.reload();
    //       }
    //     }
    //   }
    // } catch (error) {
    //   console.error("Version check failed:", error);
    // }
  // }

  const token = sessionStorage.getItem("token");
  // 登录页面判断
  if (to.path === "/login") {
    if (token) {
      next("/");
      return;
    }
  } else {
    if (!token && to.path !== "/register") {
      next("/login");
      return;
    }
  }

  next();
  // 获取用户信息
  if (token) {
    await getUserInfo();
  }
  if (process.env.NODE_ENV === "production") {
    request.get('/business/businessConfig/queryConfigByCode?code=appVersion').then(res => {
      if (res.code == 200) {
        if (res?.result?.appVersion !== sessionStorage.getItem('appVersion')) {
          sessionStorage.setItem('appVersion', res?.result?.appVersion)
          if(to.path !== '/login') {
            window.location.reload()
          }
        }
      }
    })
  }
});

router.afterEach(() => {
  NProgress.done();
});

export default router;