import Vue from 'vue' import Router from 'vue-router' import EventCreate from './views/EventCreate.vue' import EventList from './views/EventList.vue' import EventShow from './views/EventShow.vue' import NProgress from 'nprogress' import store from '@/store/store' import NotFound from './views/NotFound.vue' import NetworkIssue from './views/NetworkIssue.vue' Vue.use(Router) // Must use const for Global Route gaurd calls. const router = new Router({ mode: 'history', routes: [ { path: '/', name: 'event-list', component: EventList, props: true }, { path: '/event/create', name: 'event-create', component: EventCreate }, { path: '/event/:id', name: 'event-show', component: EventShow, props: true, beforeEnter(routeTo, routeFrom, next) { store .dispatch('event/fetchEvent', routeTo.params.id) .then(event => { routeTo.params.event = event next() }) .catch(error => { if (error.response && error.response.status == 404) { next({ name: '404', params: { resource: 'event' } }) } else { next({ name: 'network-issue' }) } }) } }, { path: '/404', name: '404', component: NotFound, props: true }, { path: '/network-issue', name: 'network-issue', component: NetworkIssue }, { path: '*', redirect: { name: '404', params: { resource: 'page' } } } ] }) router.beforeEach((routeTo, routeFrom, next) => { console.log(`Leaving: ${routeFrom.path} moving to ${routeTo.path}`) NProgress.start() next() }) router.afterEach((routeTo, routeFrom) => { routeFrom NProgress.done() }) export default router