Skip to content
Snippets Groups Projects
index.js 27.8 KiB
Newer Older
  • Learn to ignore specific revisions
  • import Vue from "vue"
    import Router from "vue-router"
    
    Eliot Berriot's avatar
    Eliot Berriot committed
    console.log('PROCESS', process.env)
    
      mode: "history",
      linkActiveClass: "active",
      base: process.env.VUE_APP_ROUTER_BASE_URL || "/",
    
      scrollBehavior(to, from, savedPosition) {
    
        if (to.meta.preserveScrollPosition) {
          return savedPosition
        }
    
        return new Promise(resolve => {
          setTimeout(() => {
            if (to.hash) {
              resolve({ selector: to.hash });
            }
            let pos = savedPosition || { x: 0, y: 0 };
            resolve(pos);
          }, 100);
        });
      },
    
          path: "/",
          name: "index",
    
            import(/* webpackChunkName: "core" */ "@/components/Home")
    
          path: "/front",
          name: "front",
    
          redirect: to => {
    
            const { hash, query } = to
    
            return { name: 'index', hash, query }
          }
    
          path: "/about",
          name: "about",
    
            import(/* webpackChunkName: "about" */ "@/components/About")
    
          path: "/login",
          name: "login",
    
            import(/* webpackChunkName: "login" */ "@/views/auth/Login"),
    
          props: route => ({ next: route.query.next || "/library" })
    
          path: "/notifications",
          name: "notifications",
    
            import(/* webpackChunkName: "notifications" */ "@/views/Notifications")
    
          path: "/auth/password/reset",
          name: "auth.password-reset",
    
            import(/* webpackChunkName: "password-reset" */ "@/views/auth/PasswordReset"),
    
          props: route => ({
    
            defaultEmail: route.query.email
          })
        },
    
        {
          path: "/auth/callback",
          name: "auth.callback",
          component: () =>
            import(/* webpackChunkName: "auth-callback" */ "@/views/auth/Callback"),
          props: route => ({
            code: route.query.code,
            state: route.query.state,
          })
        },
    
          path: "/auth/email/confirm",
          name: "auth.email-confirm",
    
            import(/* webpackChunkName: "signup" */ "@/views/auth/EmailConfirm"),
    
          props: route => ({
    
        {
          path: "/search",
          name: "search",
          component: () =>
            import(/* webpackChunkName: "core" */ "@/views/Search"),
          props: route => ({
    
            initialId: route.query.id,
            type: route.query.type,
    
          path: "/auth/password/reset/confirm",
          name: "auth.password-reset-confirm",
    
              /* webpackChunkName: "password-reset" */ "@/views/auth/PasswordResetConfirm"
    
            ),
          props: route => ({
    
            defaultUid: route.query.uid,
            defaultToken: route.query.token
          })
        },
    
          path: "/authorize",
          name: "authorize",
    
            import(/* webpackChunkName: "settings" */ "@/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's avatar
    Eliot Berriot committed
        {
    
          path: "/signup",
          name: "signup",
    
            import(/* webpackChunkName: "signup" */ "@/views/auth/Signup"),
    
          props: route => ({
    
            defaultInvitation: route.query.invitation
    
    Eliot Berriot's avatar
    Eliot Berriot committed
        },
    
          path: "/logout",
          name: "logout",
    
            import(/* webpackChunkName: "login" */ "@/components/auth/Logout")
    
          path: "/settings",
          name: "settings",
    
            import(/* webpackChunkName: "settings" */ "@/components/auth/Settings")
    
          path: "/settings/applications/new",
          name: "settings.applications.new",
          props: route => ({
    
            redirect_uris: route.query.redirect_uris
    
              /* webpackChunkName: "settings" */ "@/components/auth/ApplicationNew"
    
          path: "/settings/applications/:id/edit",
          name: "settings.applications.edit",
    
              /* webpackChunkName: "settings" */ "@/components/auth/ApplicationEdit"
    
        ...[{suffix: '.full', path: '/@:username@:domain'}, {suffix: '', path: '/@:username'}].map((route) => {
    
            path: route.path,
            name: `profile${route.suffix}`,
    
            component: () =>
            import(/* webpackChunkName: "core" */ "@/views/auth/ProfileBase"),
            props: true,
            children: [
              {
                path: "",
    
                name: `profile${route.suffix}.overview`,
    
                component: () =>
                  import(
                    /* webpackChunkName: "core" */ "@/views/auth/ProfileOverview"
                  )
              },
              {
                path: "activity",
    
                name: `profile${route.suffix}.activity`,
    
                component: () =>
                  import(
                    /* webpackChunkName: "core" */ "@/views/auth/ProfileActivity"
                  )
              },
            ]
          }
        }),
    
          path: "/favorites",
    
            import(/* webpackChunkName: "favorites" */ "@/components/favorites/List"),
    
          props: route => ({
    
            defaultOrdering: route.query.ordering,
    
            defaultPage: route.query.page,
            defaultPaginateBy: route.query.paginateBy
    
          path: "/content",
    
          component: () =>
            import(/* webpackChunkName: "core" */ "@/views/content/Base"),
    
              path: "",
              name: "content.index",
    
                import(/* webpackChunkName: "core" */ "@/views/content/Home")
    
          path: "/content/libraries/tracks",
    
            import(/* webpackChunkName: "auth-libraries" */ "@/views/content/Base"),
    
              path: "",
              name: "content.libraries.files",
    
                  /* webpackChunkName: "auth-libraries" */ "@/views/content/libraries/Files"
    
                ),
              props: route => ({
    
          path: "/content/libraries",
    
            import(/* webpackChunkName: "auth-libraries" */ "@/views/content/Base"),
    
              path: "",
              name: "content.libraries.index",
    
                  /* webpackChunkName: "auth-libraries" */ "@/views/content/libraries/Home"
    
          path: "/content/remote",
    
            import(/* webpackChunkName: "auth-libraries" */ "@/views/content/Base"),
    
              path: "",
              name: "content.remote.index",
    
                import(/* webpackChunkName: "auth-libraries" */ "@/views/content/remote/Home")
    
          path: "/manage/settings",
          name: "manage.settings",
    
            import(/* webpackChunkName: "admin" */ "@/views/admin/Settings")
    
          path: "/manage/library",
    
          component: () =>
            import(/* webpackChunkName: "admin" */ "@/views/admin/library/Base"),
    
              path: "edits",
              name: "manage.library.edits",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/EditsList"
                ),
              props: route => {
    
                  defaultQuery: route.query.q
    
              path: "artists",
              name: "manage.library.artists",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/ArtistsList"
                ),
              props: route => {
    
                  defaultQuery: route.query.q
    
              path: "artists/:id",
              name: "manage.library.artists.detail",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/ArtistDetail"
                ),
    
              path: "channels",
    
              name: "manage.channels",
              component: () =>
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/ChannelsList"
                ),
              props: route => {
                return {
                  defaultQuery: route.query.q
                }
              }
            },
            {
              path: "channels/:id",
              name: "manage.channels.detail",
              component: () =>
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/ChannelDetail"
                ),
              props: true
            },
            {
              path: "albums",
    
              name: "manage.library.albums",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/AlbumsList"
                ),
              props: route => {
    
                  defaultQuery: route.query.q
    
              path: "albums/:id",
              name: "manage.library.albums.detail",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/AlbumDetail"
                ),
    
              path: "tracks",
              name: "manage.library.tracks",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/TracksList"
                ),
              props: route => {
    
                  defaultQuery: route.query.q
    
              path: "tracks/:id",
              name: "manage.library.tracks.detail",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/TrackDetail"
                ),
    
              path: "libraries",
              name: "manage.library.libraries",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/LibrariesList"
                ),
              props: route => {
    
                  defaultQuery: route.query.q
    
              path: "libraries/:id",
              name: "manage.library.libraries.detail",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/LibraryDetail"
                ),
    
              path: "uploads",
              name: "manage.library.uploads",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/UploadsList"
                ),
              props: route => {
    
                  defaultQuery: route.query.q
    
              path: "uploads/:id",
              name: "manage.library.uploads.detail",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/UploadDetail"
                ),
    
            {
              path: "tags",
              name: "manage.library.tags",
              component: () =>
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/TagsList"
                ),
              props: route => {
                return {
                  defaultQuery: route.query.q
                }
              }
            },
            {
              path: "tags/:id",
              name: "manage.library.tags.detail",
              component: () =>
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/library/TagDetail"
                ),
              props: true
            }
    
          path: "/manage/users",
    
          component: () =>
            import(/* webpackChunkName: "admin" */ "@/views/admin/users/Base"),
    
    Eliot Berriot's avatar
    Eliot Berriot committed
          children: [
            {
    
              path: "users",
              name: "manage.users.users.list",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/users/UsersList"
                )
    
              path: "invitations",
              name: "manage.users.invitations.list",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/users/InvitationsList"
                )
    
          path: "/manage/moderation",
    
          component: () =>
            import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/Base"),
    
              path: "domains",
              name: "manage.moderation.domains.list",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/moderation/DomainsList"
                )
    
              path: "domains/:id",
              name: "manage.moderation.domains.detail",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/moderation/DomainsDetail"
                ),
    
              props: true
    
              path: "accounts",
              name: "manage.moderation.accounts.list",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/moderation/AccountsList"
                ),
              props: route => {
    
                  defaultQuery: route.query.q
    
              path: "accounts/:id",
              name: "manage.moderation.accounts.detail",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/moderation/AccountsDetail"
                ),
    
              props: true
    
              path: "reports",
              name: "manage.moderation.reports.list",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/moderation/ReportsList"
                ),
              props: route => {
    
                return {
                  defaultQuery: route.query.q,
    
                  updateUrl: true
    
              path: "reports/:id",
              name: "manage.moderation.reports.detail",
    
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/moderation/ReportDetail"
                ),
    
            {
              path: "requests",
              name: "manage.moderation.requests.list",
              component: () =>
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/moderation/RequestsList"
                ),
              props: route => {
                return {
                  defaultQuery: route.query.q,
                  updateUrl: true
                }
              }
            },
            {
              path: "requests/:id",
              name: "manage.moderation.requests.detail",
              component: () =>
                import(
                  /* webpackChunkName: "admin" */ "@/views/admin/moderation/RequestDetail"
                ),
              props: true
            },
    
          path: "/library",
    
          component: () =>
            import(/* webpackChunkName: "core" */ "@/components/library/Library"),
    
              component: () =>
                import(/* webpackChunkName: "core" */ "@/components/library/Home"),
    
              name: "library.index"
    
            {
              path: "me",
              component: () =>
                import(/* webpackChunkName: "core" */ "@/components/library/Home"),
              name: "library.me",
              props: route => ({
                scope: 'me',
              })
            },
    
              path: "artists/",
              name: "library.artists.browse",
    
                  /* webpackChunkName: "artists" */ "@/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: "me/artists",
              name: "library.artists.me",
              component: () =>
                import(
                  /* webpackChunkName: "artists" */ "@/components/library/Artists"
                ),
              props: route => ({
                scope: 'me',
                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",
    
                  /* webpackChunkName: "albums" */ "@/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: "me/albums",
              name: "library.albums.me",
              component: () =>
                import(
                  /* webpackChunkName: "albums" */ "@/components/library/Albums"
                ),
              props: route => ({
                scope: 'me',
                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",
    
                  /* webpackChunkName: "radios" */ "@/components/library/Radios"
                ),
              props: route => ({
                defaultOrdering: route.query.ordering,
                defaultQuery: route.query.query,
                defaultPaginateBy: route.query.paginateBy,
                defaultPage: route.query.page
              })
            },
            {
              path: "me/radios/",
              name: "library.radios.me",
              component: () =>
                import(
                  /* webpackChunkName: "radios" */ "@/components/library/Radios"
    
                ),
              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",
    
                  /* webpackChunkName: "radios" */ "@/components/library/radios/Builder"
    
              path: "radios/build/:id",
              name: "library.radios.edit",
    
                  /* webpackChunkName: "radios" */ "@/components/library/radios/Builder"
    
              path: "radios/:id",
              name: "library.radios.detail",
    
                import(/* webpackChunkName: "radios" */ "@/views/radios/Detail"),
    
              path: "playlists/",
              name: "library.playlists.browse",
    
                import(/* webpackChunkName: "playlists" */ "@/views/playlists/List"),
              props: route => ({
                defaultOrdering: route.query.ordering,
                defaultQuery: route.query.query,
                defaultPaginateBy: route.query.paginateBy,
                defaultPage: route.query.page
              })
            },
            {
              path: "me/playlists/",
              name: "library.playlists.me",
              component: () =>
                import(/* webpackChunkName: "playlists" */ "@/views/playlists/List"),
    
              props: route => ({
    
                defaultOrdering: route.query.ordering,
                defaultQuery: route.query.query,
                defaultPaginateBy: route.query.paginateBy,
                defaultPage: route.query.page
              })
            },
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            {
    
              path: "playlists/:id",
              name: "library.playlists.detail",
    
                import(/* webpackChunkName: "playlists" */ "@/views/playlists/Detail"),
    
              props: route => ({
    
    Eliot Berriot's avatar
    Eliot Berriot committed
                id: route.params.id,
    
                defaultEdit: route.query.mode === "edit"
              })
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            },
    
              path: "tags/:id",
              name: "library.tags.detail",
    
                  /* webpackChunkName: "tags" */ "@/components/library/TagDetail"
    
              path: "artists/:id",
    
                  /* webpackChunkName: "artists" */ "@/components/library/ArtistBase"
    
              props: true,
              children: [
                {
    
                  path: "",
                  name: "library.artists.detail",
    
                      /* webpackChunkName: "artists" */ "@/components/library/ArtistDetail"
    
                  path: "edit",
                  name: "library.artists.edit",
    
                      /* webpackChunkName: "edits" */ "@/components/library/ArtistEdit"
    
                  path: "edit/:editId",
                  name: "library.artists.edit.detail",
    
                      /* webpackChunkName: "edits" */ "@/components/library/EditDetail"
    
              path: "albums/:id",
    
                  /* webpackChunkName: "albums" */ "@/components/library/AlbumBase"
    
              props: true,
              children: [
                {
    
                  path: "",
                  name: "library.albums.detail",
    
                      /* webpackChunkName: "albums" */ "@/components/library/AlbumDetail"
    
                  path: "edit",
                  name: "library.albums.edit",
    
                      /* webpackChunkName: "edits" */ "@/components/library/AlbumEdit"
    
                  path: "edit/:editId",
                  name: "library.albums.edit.detail",
    
                      /* webpackChunkName: "edits" */ "@/components/library/EditDetail"
    
              path: "tracks/:id",
    
                  /* webpackChunkName: "tracks" */ "@/components/library/TrackBase"
    
              props: true,
              children: [
                {
    
                  path: "",
                  name: "library.tracks.detail",
    
                      /* webpackChunkName: "tracks" */ "@/components/library/TrackDetail"
    
                  path: "edit",
                  name: "library.tracks.edit",
    
                      /* webpackChunkName: "edits" */ "@/components/library/TrackEdit"
    
                  path: "edit/:editId",
                  name: "library.tracks.edit.detail",
    
                      /* webpackChunkName: "edits" */ "@/components/library/EditDetail"
    
            {
              path: "uploads/:id",
              name: "library.uploads.detail",
              props: true,
              component: () =>
                import(
                  /* webpackChunkName: "uploads" */ "@/components/library/UploadDetail"
                ),
            },
    
            {
              // 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(
                  /* webpackChunkName: "library" */ "@/views/library/DetailBase"
                ),
              children: [
                {
                  path: "",
                  name: "library.detail",
                  component: () =>
                    import(
                      /* webpackChunkName: "library" */ "@/views/library/DetailOverview"
                    )
                },
                {
                  path: "albums",
                  name: "library.detail.albums",
                  component: () =>
                    import(
                      /* webpackChunkName: "library" */ "@/views/library/DetailAlbums"
                    )
                },
                {
                  path: "tracks",
                  name: "library.detail.tracks",
                  component: () =>
                    import(
                      /* webpackChunkName: "library" */ "@/views/library/DetailTracks"
                    )
                },
                {
                  path: "edit",
                  name: "library.detail.edit",
                  component: () =>
                    import(
                      /* webpackChunkName: "auth-libraries" */ "@/views/library/Edit"
                    )
                },
                {
                  path: "upload",
                  name: "library.detail.upload",
                  component: () =>
                    import(
                      /* webpackChunkName: "auth-libraries" */ "@/views/library/Upload"
                    ),
                  props: route => ({
                    defaultImportReference: route.query.import
                  })
                },
                // {
                //   path: "episodes",
                //   name: "library.detail.episodes",
                //   component: () =>
                //     import(
                //       /* webpackChunkName: "library" */ "@/views/library/DetailEpisodes"
                //     )
                // },
              ]
    
        {
          path: "/channels/:id",
          props: true,
          component: () =>
            import(
              /* webpackChunkName: "channels" */ "@/views/channels/DetailBase"
            ),
          children: [
            {
              path: "",
              name: "channels.detail",
              component: () =>
                import(
                  /* webpackChunkName: "channels" */ "@/views/channels/DetailOverview"
                )
            },
            {
              path: "episodes",
              name: "channels.detail.episodes",
              component: () =>
                import(
                  /* webpackChunkName: "channels" */ "@/views/channels/DetailEpisodes"
                )
            },
          ]
        },
    
        {
          path: "/subscriptions",
          name: "subscriptions",
          props: route => {
            return {
              defaultQuery: route.query.q
            }
          },
          component: () =>
            import(
              /* webpackChunkName: "channels-auth" */ "@/views/channels/SubscriptionsList"
            ),
        },
    
    Eliot Berriot's avatar
    Eliot Berriot committed
        {
    
          path: "*/index.html",
          redirect: "/"
    
    Eliot Berriot's avatar
    Eliot Berriot committed
        },
    
            import(/* webpackChunkName: "core" */ "@/components/PageNotFound")