funkwhale/front/src/router/routes/library.ts

242 lines
6.8 KiB
TypeScript

import type { RouteRecordRaw } from 'vue-router'
export default [
{
path: '/library',
component: () => import('~/components/library/Library.vue'),
children: [
{
path: '',
component: () => import('~/components/library/Home.vue'),
name: 'library.index'
},
{
path: 'me',
component: () => import('~/components/library/Home.vue'),
name: 'library.me',
props: () => ({ scope: 'me' })
},
{
path: 'artists/',
name: 'library.artists.browse',
component: () => import('~/components/library/Artists.vue'),
meta: {
paginateBy: 30
}
},
{
path: 'me/artists',
name: 'library.artists.me',
component: () => import('~/components/library/Artists.vue'),
props: { scope: 'me' },
meta: {
paginateBy: 30
}
},
{
path: 'albums/',
name: 'library.albums.browse',
component: () => import('~/components/library/Albums.vue'),
meta: {
paginateBy: 25
}
},
{
path: 'me/albums',
name: 'library.albums.me',
component: () => import('~/components/library/Albums.vue'),
props: { scope: 'me' },
meta: {
paginateBy: 25
}
},
{
path: 'podcasts/',
name: 'library.podcasts.browse',
component: () => import('~/components/library/Podcasts.vue'),
meta: {
paginateBy: 30
}
},
{
path: 'radios/',
name: 'library.radios.browse',
component: () => import('~/components/library/Radios.vue'),
meta: {
paginateBy: 12
}
},
{
path: 'me/radios/',
name: 'library.radios.me',
component: () => import('~/components/library/Radios.vue'),
props: { scope: 'me' },
meta: {
paginateBy: 12
}
},
{
path: 'radios/build',
name: 'library.radios.build',
component: () => import('~/components/library/radios/Builder.vue'),
props: true
},
{
path: 'radios/build/:id',
name: 'library.radios.edit',
component: () => import('~/components/library/radios/Builder.vue'),
props: true
},
{
path: 'radios/:id',
name: 'library.radios.detail',
component: () => import('~/views/radios/Detail.vue'),
props: true
},
{
path: 'playlists/',
name: 'library.playlists.browse',
component: () => import('~/views/playlists/List.vue'),
meta: {
paginateBy: 25
}
},
{
path: 'me/playlists/',
name: 'library.playlists.me',
component: () => import('~/views/playlists/List.vue'),
props: { scope: 'me' },
meta: {
paginateBy: 25
}
},
{
path: 'playlists/:id',
name: 'library.playlists.detail',
component: () => import('~/views/playlists/Detail.vue'),
props: route => ({
id: route.params.id,
defaultEdit: route.query.mode === 'edit'
})
},
{
path: 'tags/:id',
name: 'library.tags.detail',
component: () => import('~/components/library/TagDetail.vue'),
props: true
},
{
path: 'artists/:id',
component: () => import('~/components/library/ArtistBase.vue'),
props: true,
children: [
{
path: '',
name: 'library.artists.detail',
component: () => import('~/components/library/ArtistDetail.vue')
},
{
path: 'edit',
name: 'library.artists.edit',
component: () => import('~/components/library/ArtistEdit.vue')
},
{
path: 'edit/:editId',
name: 'library.artists.edit.detail',
component: () => import('~/components/library/EditDetail.vue'),
props: true
}
]
},
{
path: 'albums/:id',
component: () => import('~/components/library/AlbumBase.vue'),
props: true,
children: [
{
path: '',
name: 'library.albums.detail',
component: () => import('~/components/library/AlbumDetail.vue')
},
{
path: 'edit',
name: 'library.albums.edit',
component: () => import('~/components/library/AlbumEdit.vue')
},
{
path: 'edit/:editId',
name: 'library.albums.edit.detail',
component: () => import('~/components/library/EditDetail.vue'),
props: true
}
]
},
{
path: 'tracks/:id',
component: () => import('~/components/library/TrackBase.vue'),
props: true,
children: [
{
path: '',
name: 'library.tracks.detail',
component: () => import('~/components/library/TrackDetail.vue')
},
{
path: 'edit',
name: 'library.tracks.edit',
component: () => import('~/components/library/TrackEdit.vue')
},
{
path: 'edit/:editId',
name: 'library.tracks.edit.detail',
component: () => import('~/components/library/EditDetail.vue'),
props: true
}
]
},
{
path: 'uploads/:id',
name: 'library.uploads.detail',
props: true,
component: () => import('~/components/library/UploadDetail.vue')
},
{
// browse a single library via it's uuid
path: ':id([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})',
props: true,
component: () => import('~/views/library/LibraryBase.vue'),
children: [
{
path: '',
name: 'library.detail',
component: () => import('~/views/library/DetailOverview.vue')
},
{
path: 'albums',
name: 'library.detail.albums',
component: () => import('~/views/library/DetailAlbums.vue')
},
{
path: 'tracks',
name: 'library.detail.tracks',
component: () => import('~/views/library/DetailTracks.vue')
},
{
path: 'edit',
name: 'library.detail.edit',
component: () => import('~/views/library/Edit.vue')
},
{
path: 'upload',
name: 'library.detail.upload',
component: () => import('~/views/library/Upload.vue'),
props: route => ({
defaultImportReference: route.query.import
})
}
]
}
]
}
] as RouteRecordRaw[]