Skip to content
Snippets Groups Projects
Select Git revision
  • 1425-remove-raven-sentry
  • develop default protected
  • set-sast-config-1
  • master
  • tracemallocmiddleware
  • 1299-encoding-problem-in-rss-feeds
  • 1346-selectoreventloop-required-instead-got-uvloop-loop
  • 1278-embed-isn-t-available-in-the-front-end-for-channel-tracks
  • 1311-feedparser-requires-update-to-accomodate-python-3-9
  • 1.0.1
  • 1121-download
  • plugins-v3
  • plugins-v2
  • plugins
  • 1.1.1
  • 1.1
  • 1.1-rc2
  • 1.1-rc1
  • 1.0.1
  • 1.0
  • 1.0-rc1
  • 0.21.2
  • 0.21.1
  • 0.21
  • 0.21-rc2
  • 0.21-rc1
  • 0.20.1
  • 0.20.0
  • 0.20.0-rc1
  • 0.19.1
  • 0.19.0
  • 0.19.0-rc2
  • 0.19.0-rc1
  • 0.18.3
34 results

index.js

Blame
  • Forked from funkwhale / funkwhale
    5463 commits behind the upstream repository.
    index.js 2.55 KiB
    import Vue from 'vue'
    import Vuex from 'vuex'
    import createPersistedState from 'vuex-persistedstate'
    
    import favorites from './favorites'
    import auth from './auth'
    import instance from './instance'
    import moderation from './moderation'
    import queue from './queue'
    import radios from './radios'
    import player from './player'
    import playlists from './playlists'
    import ui from './ui'
    
    Vue.use(Vuex)
    
    export default new Vuex.Store({
      modules: {
        ui,
        auth,
        favorites,
        instance,
        moderation,
        queue,
        radios,
        playlists,
        player
      },
      plugins: [
        createPersistedState({
          key: 'auth',
          paths: ['auth'],
          filter: (mutation) => {
            return mutation.type.startsWith('auth/')
          }
        }),
        createPersistedState({
          key: 'instance',
          paths: ['instance.events', 'instance.instanceUrl', 'instance.knownInstances']
        }),
        createPersistedState({
          key: 'ui',
          paths: ['ui.currentLanguage', 'ui.momentLocale', 'ui.theme']
        }),
        createPersistedState({
          key: 'radios',
          paths: ['radios'],
          filter: (mutation) => {
            return mutation.type.startsWith('radios/')
          }
        }),
        createPersistedState({
          key: 'player',
          paths: [
            'player.looping',
            'player.volume',
            'player.duration'],
          filter: (mutation) => {
            return mutation.type.startsWith('player/') && mutation.type !== 'player/currentTime'
          }
        }),
        createPersistedState({
          key: 'queue',
          filter: (mutation) => {
            return mutation.type.startsWith('queue/')
          },
          reducer: (state) => {
            return {
              queue: {
                currentIndex: state.queue.currentIndex,
                tracks: state.queue.tracks.map(track => {
                  // we keep only valuable fields to make the cache lighter and avoid
                  // cyclic value serialization errors
                  let artist = {
                    id: track.artist.id,
                    mbid: track.artist.mbid,
                    name: track.artist.name
                  }
                  return {
                    id: track.id,
                    title: track.title,
                    mbid: track.mbid,
                    uploads: track.uploads,
                    listen_url: track.listen_url,
                    album: {
                      id: track.album.id,
                      title: track.album.title,
                      mbid: track.album.mbid,
                      cover: track.album.cover,
                      artist: artist
                    },
                    artist: artist
                  }
                })
              }
            }
          }
        })
      ]
    })