salix-front/src/router/index.js

41 lines
1.2 KiB
JavaScript

import { route as defineRouter } from 'quasar/wrappers';
import {
createRouter,
createMemoryHistory,
createWebHistory,
createWebHashHistory,
} from 'vue-router';
import routes from './routes';
import { useState } from 'src/composables/useState';
import { navigationGuard, setPageTitle, stateQueryGuard } from './hooks';
const webHistory =
process.env.VUE_ROUTER_MODE === 'history' ? createWebHistory : createWebHashHistory;
const createHistory = process.env.SERVER ? createMemoryHistory : webHistory;
const Router = createRouter({
scrollBehavior: () => ({ left: 0, top: 0 }),
routes,
history: createHistory(process.env.VUE_ROUTER_BASE),
});
export { Router };
export default defineRouter(() => {
const state = useState();
Router.beforeEach((to, from, next) => navigationGuard(to, from, next, Router, state));
Router.beforeEach(stateQueryGuard);
Router.afterEach(setPageTitle);
Router.onError(({ message }) => {
const errorMessages = [
'Failed to fetch dynamically imported module',
'Importing a module script failed',
];
state.set(
'error',
errorMessages.some((error) => message.startsWith(error)),
);
});
return Router;
});