Newer
Older
Eliot Berriot
committed
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
Eliot Berriot
committed
export default new Router({
mode: 'history',
linkActiveClass: 'active',
base: process.env.VUE_APP_ROUTER_BASE_URL || '/',
Eliot Berriot
committed
routes: [
{
path: '/',
name: 'index',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/Home"),
Eliot Berriot
committed
},
{
path: '/front',
name: 'front',
redirect: '/'
},
{
path: '/about',
name: 'about',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/About"),
Eliot Berriot
committed
{
path: '/login',
name: 'login',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/Login"),
props: (route) => ({ next: route.query.next || '/library' })
Eliot Berriot
committed
},
{
path: '/notifications',
name: 'notifications',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/Notifications"),
{
path: '/auth/password/reset',
name: 'auth.password-reset',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/auth/PasswordReset"),
props: (route) => ({
defaultEmail: route.query.email
})
},
{
path: '/auth/email/confirm',
name: 'auth.email-confirm',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/auth/EmailConfirm"),
props: (route) => ({
defaultKey: route.query.key
})
},
{
path: '/auth/password/reset/confirm',
name: 'auth.password-reset-confirm',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/auth/PasswordResetConfirm"),
props: (route) => ({
defaultUid: route.query.uid,
defaultToken: route.query.token
})
},
{
path: '/authorize',
name: 'authorize',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/Authorize"),
props: (route) => ({
clientId: route.query.client_id,
redirectUri: route.query.redirect_uri,
scope: route.query.scope,
responseType: route.query.response_type,
nonce: route.query.nonce,
state: route.query.state,
})
},
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/Signup"),
Eliot Berriot
committed
defaultInvitation: route.query.invitation
Eliot Berriot
committed
{
path: '/logout',
name: 'logout',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/Logout"),
Eliot Berriot
committed
},
Eliot Berriot
committed
{
path: '/settings',
name: 'settings',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/Settings"),
Eliot Berriot
committed
},
{
path: '/settings/applications/new',
name: 'settings.applications.new',
Eliot Berriot
committed
props: (route) => ({
scopes: route.query.scopes,
name: route.query.name,
redirect_uris: route.query.redirect_uris,
}),
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/ApplicationNew"),
},
{
path: '/settings/applications/:id/edit',
name: 'settings.applications.edit',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/ApplicationEdit"),
Eliot Berriot
committed
{
path: '/@:username',
name: 'profile',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/Profile"),
Eliot Berriot
committed
props: true
},
{
path: '/favorites',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/favorites/List"),
props: (route) => ({
defaultOrdering: route.query.ordering,
defaultPage: route.query.page,
defaultPaginateBy: route.query.paginateBy
Eliot Berriot
committed
},
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/Base"),
children: [
{
path: '',
name: 'content.index',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/Home"),
}
]
},
{
path: '/content/libraries/tracks',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/Base"),
children: [
{
path: '',
name: 'content.libraries.files',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/libraries/Files"),
props: (route) => ({
query: route.query.q
})
}
]
},
{
path: '/content/libraries',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/Base"),
children: [
{
path: '',
name: 'content.libraries.index',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/libraries/Home"),
},
{
path: ':id/upload',
name: 'content.libraries.detail.upload',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/libraries/Upload"),
props: (route) => ({
id: route.params.id,
defaultImportReference: route.query.import
})
},
{
path: ':id',
name: 'content.libraries.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/libraries/Detail"),
props: true
}
]
},
{
path: '/content/remote',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/Base"),
children: [
{
path: '',
name: 'content.remote.index',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/remote/Home"),
{
path: '/manage/settings',
name: 'manage.settings',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/Settings"),
{
path: '/manage/library',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/Base"),
path: 'edits',
name: 'manage.library.edits',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/EditsList"),
props: (route) => {
return {
defaultQuery: route.query.q,
}
}
},
{
path: 'artists',
name: 'manage.library.artists',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/ArtistsList"),
props: (route) => {
return {
defaultQuery: route.query.q,
}
}
},
{
path: 'artists/:id',
name: 'manage.library.artists.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/ArtistDetail"),
props: true
},
{
path: 'albums',
name: 'manage.library.albums',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/AlbumsList"),
props: (route) => {
return {
defaultQuery: route.query.q,
}
}
},
{
path: 'albums/:id',
name: 'manage.library.albums.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/AlbumDetail"),
props: true
},
{
path: 'tracks',
name: 'manage.library.tracks',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/TracksList"),
props: (route) => {
return {
defaultQuery: route.query.q,
}
}
},
{
path: 'tracks/:id',
name: 'manage.library.tracks.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/TrackDetail"),
{
path: 'libraries',
name: 'manage.library.libraries',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/LibrariesList"),
props: (route) => {
return {
defaultQuery: route.query.q,
}
}
},
{
path: 'libraries/:id',
name: 'manage.library.libraries.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/LibraryDetail"),
props: true
},
{
path: 'uploads',
name: 'manage.library.uploads',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/UploadsList"),
props: (route) => {
return {
defaultQuery: route.query.q,
}
}
},
{
path: 'uploads/:id',
name: 'manage.library.uploads.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/UploadDetail"),
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/users/Base"),
path: 'users',
name: 'manage.users.users.list',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/users/UsersList"),
{
path: 'invitations',
name: 'manage.users.invitations.list',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/users/InvitationsList"),
{
path: '/manage/moderation',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/Base"),
children: [
{
path: 'domains',
name: 'manage.moderation.domains.list',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/DomainsList"),
},
{
path: 'domains/:id',
name: 'manage.moderation.domains.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/DomainsDetail"),
},
{
path: 'accounts',
name: 'manage.moderation.accounts.list',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/AccountsList"),
props: (route) => {
return {
defaultQuery: route.query.q,
}
}
},
{
path: 'accounts/:id',
name: 'manage.moderation.accounts.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/AccountsDetail"),
Eliot Berriot
committed
{
Eliot Berriot
committed
path: '/library',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/Library"),
Eliot Berriot
committed
children: [
Eliot Berriot
committed
{
path: '',
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/Home"),
name: 'library.index'
},
{
path: 'artists/',
name: 'library.artists.browse',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/Artists"),
props: (route) => ({
defaultOrdering: route.query.ordering,
defaultQuery: route.query.query,
defaultTags: Array.isArray(route.query.tag || []) ? route.query.tag : [route.query.tag],
defaultPaginateBy: route.query.paginateBy,
defaultPage: route.query.page
})
},
{
path: 'albums/',
name: 'library.albums.browse',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/Albums"),
props: (route) => ({
defaultOrdering: route.query.ordering,
defaultQuery: route.query.query,
defaultTags: Array.isArray(route.query.tag || []) ? route.query.tag : [route.query.tag],
defaultPaginateBy: route.query.paginateBy,
defaultPage: route.query.page
})
},
{
path: 'radios/',
name: 'library.radios.browse',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/Radios"),
props: (route) => ({
defaultOrdering: route.query.ordering,
defaultQuery: route.query.query,
defaultPaginateBy: route.query.paginateBy,
defaultPage: route.query.page
})
},
Eliot Berriot
committed
{
path: 'radios/build',
name: 'library.radios.build',
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/radios/Builder"),
props: true
},
{
path: 'radios/build/:id',
name: 'library.radios.edit',
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/radios/Builder"),
props: true
},
{
path: 'radios/:id',
name: 'library.radios.detail',
component: () =>
import(/* webpackChunkName: "core" */ "@/views/radios/Detail"),
props: true
},
{
path: 'playlists/',
name: 'library.playlists.browse',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/playlists/List"),
props: (route) => ({
defaultOrdering: route.query.ordering,
defaultQuery: route.query.query,
defaultPaginateBy: route.query.paginateBy,
defaultPage: route.query.page
})
},
{
path: 'playlists/:id',
name: 'library.playlists.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/views/playlists/Detail"),
props: (route) => ({
id: route.params.id,
defaultEdit: route.query.mode === 'edit' })
},
{
path: 'tags/:id',
name: 'library.tags.detail',
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/TagDetail"),
props: true,
},
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/ArtistBase"),
props: true,
children: [
{
path: '',
name: 'library.artists.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/ArtistDetail"),
},
{
path: 'edit',
name: 'library.artists.edit',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/ArtistEdit"),
},
{
path: 'edit/:editId',
name: 'library.artists.edit.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/EditDetail"),
props: true,
}
]
},
{
path: 'albums/:id',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/AlbumBase"),
props: true,
children: [
{
path: '',
name: 'library.albums.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/AlbumDetail"),
},
{
path: 'edit',
name: 'library.albums.edit',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/AlbumEdit"),
},
{
path: 'edit/:editId',
name: 'library.albums.edit.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/EditDetail"),
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/TrackBase"),
props: true,
children: [
{
path: '',
name: 'library.tracks.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/TrackDetail"),
},
{
path: 'edit',
name: 'library.tracks.edit',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/TrackEdit"),
},
{
path: 'edit/:editId',
name: 'library.tracks.edit.detail',
Eliot Berriot
committed
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/EditDetail"),
Eliot Berriot
committed
]
{
path: '*/index.html',
redirect: '/'
},
Eliot Berriot
committed
{
path: '*',
component: () =>
import(/* webpackChunkName: "core" */ "@/components/PageNotFound"),
}