Skip to content
Snippets Groups Projects
index.js 4.84 KiB
Newer Older
  • Learn to ignore specific revisions
  • import Vue from 'vue'
    import Router from 'vue-router'
    
    import PageNotFound from '@/components/PageNotFound'
    
    import About from '@/components/About'
    
    Eliot Berriot's avatar
    Eliot Berriot committed
    import InstanceTimeline from '@/views/instance/Timeline'
    
    import Login from '@/components/auth/Login'
    
    Eliot Berriot's avatar
    Eliot Berriot committed
    import Signup from '@/components/auth/Signup'
    
    import Profile from '@/components/auth/Profile'
    
    import Settings from '@/components/auth/Settings'
    
    import Logout from '@/components/auth/Logout'
    
    import Library from '@/components/library/Library'
    import LibraryHome from '@/components/library/Home'
    import LibraryArtist from '@/components/library/Artist'
    
    import LibraryArtists from '@/components/library/Artists'
    
    import LibraryAlbum from '@/components/library/Album'
    import LibraryTrack from '@/components/library/Track'
    import LibraryImport from '@/components/library/import/Main'
    
    import LibraryRadios from '@/components/library/Radios'
    import RadioBuilder from '@/components/library/radios/Builder'
    
    import BatchList from '@/components/library/import/BatchList'
    import BatchDetail from '@/components/library/import/BatchDetail'
    
    Eliot Berriot's avatar
    Eliot Berriot committed
    import RequestsList from '@/components/requests/RequestsList'
    
    import PlaylistDetail from '@/views/playlists/Detail'
    
    import Favorites from '@/components/favorites/List'
    
    Vue.use(Router)
    
    export default new Router({
      mode: 'history',
      linkActiveClass: 'active',
      routes: [
        {
          path: '/',
          name: 'index',
          component: Home
        },
    
        {
          path: '/about',
          name: 'about',
          component: About
        },
    
    Eliot Berriot's avatar
    Eliot Berriot committed
        {
          path: '/activity',
          name: 'activity',
          component: InstanceTimeline
        },
    
          component: Login,
          props: (route) => ({ next: route.query.next || '/library' })
    
    Eliot Berriot's avatar
    Eliot Berriot committed
        {
          path: '/signup',
          name: 'signup',
          component: Signup
        },
    
        {
          path: '/logout',
          name: 'logout',
          component: Logout
        },
    
        {
          path: '/settings',
          name: 'settings',
          component: Settings
        },
    
        {
          path: '/@:username',
          name: 'profile',
          component: Profile,
          props: true
        },
        {
          path: '/favorites',
    
          component: Favorites,
          props: (route) => ({
            defaultOrdering: route.query.ordering,
    
            defaultPage: route.query.page,
            defaultPaginateBy: route.query.paginateBy
    
            {
              path: 'artists/',
              name: 'library.artists.browse',
              component: LibraryArtists,
              props: (route) => ({
                defaultOrdering: route.query.ordering,
                defaultQuery: route.query.query,
                defaultPaginateBy: route.query.paginateBy,
                defaultPage: route.query.page
              })
            },
    
            {
              path: 'radios/',
              name: 'library.radios.browse',
              component: LibraryRadios,
              props: (route) => ({
                defaultOrdering: route.query.ordering,
                defaultQuery: route.query.query,
                defaultPaginateBy: route.query.paginateBy,
                defaultPage: route.query.page
              })
            },
            { path: 'radios/build', name: 'library.radios.build', component: RadioBuilder, props: true },
            { path: 'radios/build/:id', name: 'library.radios.edit', component: RadioBuilder, props: true },
    
            { path: 'playlists/:id', name: 'library.playlists.detail', component: PlaylistDetail, props: true },
    
            { path: 'artists/:id', name: 'library.artists.detail', component: LibraryArtist, props: true },
            { path: 'albums/:id', name: 'library.albums.detail', component: LibraryAlbum, props: true },
            { path: 'tracks/:id', name: 'library.tracks.detail', component: LibraryTrack, props: true },
    
            {
              path: 'import/launch',
              name: 'library.import.launch',
              component: LibraryImport,
    
              props: (route) => ({
                source: route.query.source,
    
    Eliot Berriot's avatar
    Eliot Berriot committed
                request: route.query.request,
    
                mbType: route.query.type,
                mbId: route.query.id })
    
            },
            {
              path: 'import/batches',
              name: 'library.import.batches',
              component: BatchList,
              children: [
              ]
            },
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            { path: 'import/batches/:id', name: 'library.import.batches.detail', component: BatchDetail, props: true },
            {
              path: 'requests/',
              name: 'library.requests',
              component: RequestsList,
              props: (route) => ({
                defaultOrdering: route.query.ordering,
                defaultQuery: route.query.query,
                defaultPaginateBy: route.query.paginateBy,
                defaultPage: route.query.page,
                defaultStatus: route.query.status || 'pending'
              }),
              children: [
              ]
            }
    
        },
        { path: '*', component: PageNotFound }