41 lines
1.2 KiB
JavaScript
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;
|
|
});
|