import {
  createMemoryHistory,
  createRouter,
  createWebHashHistory,
  createWebHistory,
} from 'vue-router'
import routes from './routes'
import useLoginStore from 'stores/login'

/*
 * 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.
 */

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, from) => {
    const loginStore = useLoginStore()

    const isLoggedIn = loginStore.IsLoggedIn()

    // instead of having to check every route record with
    // to.matched.some(record => record.meta.requiresAuth)

    if (to.meta.requiresAuth && !isLoggedIn && to.path !== 'login') {
      // this route requires auth, check if logged in
      // if not, redirect to login page.

      return {
        path: '/login',
        // save the location we were at to come back later
        //query: { redirect: to.fullPath },
      }
    }

    if (isLoggedIn && to.path === 'login') {
      return {
        path: '/',
        query: '',
      }
    }
  },
)

export default Router

