import type { RouteRecordRaw, RouteLocationNormalized } from 'vue-router' import { useProjectsStore } from '../stores/projects' const setProjectBeforeEnter = (to: RouteLocationNormalized) => { const id = Number(to.params.id) const projectsStore = useProjectsStore() projectsStore.setCurrentProjectId( !isNaN(id) && projectsStore.projectById(id) ? id : null ) } const routes: RouteRecordRaw[] = [ { path: '/', component: () => import('layouts/MainLayout.vue'), children: [ { path: '', redirect: '/projects' }, { name: 'projects', path: '/projects', component: () => import('pages/ProjectsPage.vue') }, { name: 'project_add', path: '/project/add', component: () => import('pages/CreateProjectPage.vue') }, { name: 'project_info', path: '/project/:id(\\d+)/info', component: () => import('pages/ProjectInfoPage.vue'), beforeEnter: setProjectBeforeEnter }, { name: 'company_mask', path: '/project/:id(\\d+)/company-mask', component: () => import('pages/CompanyMaskPage.vue'), beforeEnter: setProjectBeforeEnter }, { path: '/project/:id(\\d+)', component: () => import('pages/ProjectPage.vue'), beforeEnter: setProjectBeforeEnter, children: [ { name: 'project', path: '', redirect: { name: 'chats' } }, { name: 'chats', path: 'chats', component: () => import('../components/admin/project-page/ProjectPageChats.vue') }, { name: 'persons', path: 'persons', component: () => import('../components/admin/project-page/ProjectPagePersons.vue') }, { name: 'companies', path: 'companies', component: () => import('../components/admin/project-page/ProjectPageCompanies.vue') } ] }, { path: '/account', name: 'account', component: () => import('pages/AccountPage.vue') }, { path: '/login', name: 'login', component: () => import('pages/LoginPage.vue') }, { path: '/recovery-password', name: 'recovery_password', component: () => import('pages/ForgotPasswordPage.vue') }, { path: '/create-company', name: 'create_company', component: () => import('pages/CreateCompanyPage.vue') }, { path: '/person-info', name: 'person_info', component: () => import('pages/PersonInfoPage.vue') } ] }, { path: '/:catchAll(.*)*', component: () => import('pages/ErrorNotFound.vue'), } ] export default routes