Allowing non-connected views and components; Adding tests
This commit is contained in:
140
src/js/store.js
Executable file
140
src/js/store.js
Executable file
@ -0,0 +1,140 @@
|
||||
|
||||
import { createStore, applyMiddleware, combineReducers } from 'redux';
|
||||
|
||||
import * as helpers from './helpers';
|
||||
|
||||
import core from './services/core/reducer';
|
||||
import ui from './services/ui/reducer';
|
||||
import pusher from './services/pusher/reducer';
|
||||
import mopidy from './services/mopidy/reducer';
|
||||
import lastfm from './services/lastfm/reducer';
|
||||
import spotify from './services/spotify/reducer';
|
||||
import snapcast from './services/snapcast/reducer';
|
||||
import google from './services/google/reducer';
|
||||
import genius from './services/genius/reducer';
|
||||
|
||||
import thunk from 'redux-thunk';
|
||||
import coreMiddleware from './services/core/middleware';
|
||||
import uiMiddleware from './services/ui/middleware';
|
||||
import pusherMiddleware from './services/pusher/middleware';
|
||||
import mopidyMiddleware from './services/mopidy/middleware';
|
||||
import lastfmMiddleware from './services/lastfm/middleware';
|
||||
import geniusMiddleware from './services/genius/middleware';
|
||||
import spotifyMiddleware from './services/spotify/middleware';
|
||||
import googleMiddleware from './services/google/middleware';
|
||||
import snapcastMiddleware from './services/snapcast/middleware';
|
||||
import localstorageMiddleware from './services/localstorage/middleware';
|
||||
|
||||
var initialState = {
|
||||
core: {
|
||||
outputs: [],
|
||||
queue: [],
|
||||
queue_metadata: {},
|
||||
current_track: null,
|
||||
albums: {},
|
||||
artists: {},
|
||||
playlists: {},
|
||||
users: {},
|
||||
tracks: {},
|
||||
http_streaming_enabled: false,
|
||||
http_streaming_cachebuster: null,
|
||||
http_streaming_url: "http://"+window.location.hostname+":8000/mopidy"
|
||||
},
|
||||
ui: {
|
||||
theme: 'dark',
|
||||
smooth_scrolling_enabled: true,
|
||||
shortkeys_enabled: true,
|
||||
allow_reporting: true,
|
||||
window_focus: true,
|
||||
slim_mode: false,
|
||||
selected_tracks: [],
|
||||
notifications: {},
|
||||
processes: {}
|
||||
},
|
||||
mopidy: {
|
||||
connected: false,
|
||||
host: window.location.hostname,
|
||||
port: (window.location.port ? window.location.port : (window.location.protocol === 'https:' ? '443' : '80')),
|
||||
ssl: (window.location.protocol === 'https:' ? true : false),
|
||||
mute: false,
|
||||
volume: 0,
|
||||
progress: 0,
|
||||
play_state: null,
|
||||
uri_schemes: [],
|
||||
library_albums_uri: 'local:directory?type=album',
|
||||
library_artists_uri: 'local:directory?type=artist'
|
||||
},
|
||||
pusher: {
|
||||
connected: false,
|
||||
username: null,
|
||||
connections: {},
|
||||
version: {
|
||||
current: null
|
||||
},
|
||||
config: {}
|
||||
},
|
||||
lastfm: {
|
||||
me: null,
|
||||
authorization_url: 'https://jamesbarnsley.co.nz/iris/auth_lastfm.php'
|
||||
},
|
||||
genius: {
|
||||
me: null,
|
||||
authorization_url: 'https://jamesbarnsley.co.nz/iris/auth_genius.php'
|
||||
},
|
||||
spotify: {
|
||||
me: null,
|
||||
autocomplete_results: {},
|
||||
authorization_url: 'https://jamesbarnsley.co.nz/iris/auth_spotify.php'
|
||||
},
|
||||
google: {
|
||||
enabled: false
|
||||
},
|
||||
snapcast: {
|
||||
streams: {},
|
||||
groups: {},
|
||||
clients: {},
|
||||
server: null,
|
||||
commands: {}
|
||||
}
|
||||
};
|
||||
|
||||
// load all our stored values from LocalStorage
|
||||
initialState.core = Object.assign({}, initialState.core, helpers.getStorage('core'));
|
||||
initialState.ui = Object.assign({}, initialState.ui, helpers.getStorage('ui'));
|
||||
initialState.mopidy = Object.assign({}, initialState.mopidy, helpers.getStorage('mopidy'));
|
||||
initialState.pusher = Object.assign({}, initialState.pusher, helpers.getStorage('pusher'));
|
||||
initialState.spotify = Object.assign({}, initialState.spotify, helpers.getStorage('spotify'));
|
||||
initialState.lastfm = Object.assign({}, initialState.lastfm, helpers.getStorage('lastfm'));
|
||||
initialState.genius = Object.assign({}, initialState.genius, helpers.getStorage('genius'));
|
||||
initialState.google = Object.assign({}, initialState.google, helpers.getStorage('google'));
|
||||
initialState.snapcast = Object.assign({}, initialState.snapcast, helpers.getStorage('snapcast'));
|
||||
|
||||
var reducers = combineReducers({
|
||||
core,
|
||||
ui,
|
||||
pusher,
|
||||
mopidy,
|
||||
lastfm,
|
||||
genius,
|
||||
spotify,
|
||||
google,
|
||||
snapcast
|
||||
});
|
||||
|
||||
export default createStore(
|
||||
reducers,
|
||||
initialState,
|
||||
applyMiddleware(
|
||||
thunk,
|
||||
localstorageMiddleware,
|
||||
coreMiddleware,
|
||||
uiMiddleware,
|
||||
mopidyMiddleware,
|
||||
pusherMiddleware,
|
||||
spotifyMiddleware,
|
||||
lastfmMiddleware,
|
||||
geniusMiddleware,
|
||||
googleMiddleware,
|
||||
snapcastMiddleware
|
||||
)
|
||||
);
|
||||
Reference in New Issue
Block a user