import { route } from 'quasar/wrappers';
import {
  createMemoryHistory,
  createRouter,
  createWebHashHistory,
  createWebHistory,
} from 'vue-router';

import routes from './routes';
import { useUserInfoStore } from 'src/common/hooks';

/*
 * If not building with SSR mode, you can
 * directly export the Router instantiation;
 *
 * The function below can be async too; either use
 * async/await or return a Promise which resolves
 * with the Router instance.
 */

export default route(function (/* { store, ssrContext } */) {
  const createHistory = process.env.SERVER
    ? createMemoryHistory
    : process.env.VUE_ROUTER_MODE === 'history'
    ? createWebHistory
    : createWebHashHistory;

  const Router = createRouter({
    scrollBehavior: () => ({ left: 0, top: 0 }),
    routes,

    // Leave this as is and make changes in quasar.conf.js instead!
    // quasar.conf.js -> build -> vueRouterMode
    // quasar.conf.js -> build -> publicPath
    history: createHistory(process.env.VUE_ROUTER_BASE),
  });

  Router.beforeEach((to: any, from: any, next: any) => {
    const userInfoStore = useUserInfoStore();

    // console.log('to', to);
    // console.log(userInfoStore.$state);

    if (to.matched.length === 0) {
      next({ name: 'NOT_FOUND' });
    } else {
      if (to.path === '/login') {
        next();
      } else {
        if (userInfoStore.$state.id > 0) {
          next();
        } else {
          next({
            path: '/login',
            query: {
              redirect: to.fullPath, // 把要跳转的页面的路径作为参数传到登录页面
            },
          });
        }
      }
    }
  });

  return Router;
});
