You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
1.8 KiB
JavaScript

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