2016-10-03 15:22:15 +13:00
|
|
|
|
2016-10-16 12:37:37 +13:00
|
|
|
import { createStore, applyMiddleware, combineReducers } from 'redux'
|
|
|
|
|
|
2016-10-27 10:02:12 +13:00
|
|
|
import ui from './services/ui/reducer'
|
2016-10-27 16:58:11 +13:00
|
|
|
import pusher from './services/pusher/reducer'
|
2016-10-16 12:37:37 +13:00
|
|
|
import mopidy from './services/mopidy/reducer'
|
2016-11-07 21:21:15 +13:00
|
|
|
import lastfm from './services/lastfm/reducer'
|
2016-10-16 12:37:37 +13:00
|
|
|
import spotify from './services/spotify/reducer'
|
|
|
|
|
|
2016-10-14 22:42:45 +13:00
|
|
|
import thunk from 'redux-thunk'
|
2016-11-11 16:47:32 +13:00
|
|
|
import uiMiddleware from './services/ui/middleware'
|
2016-10-27 16:58:11 +13:00
|
|
|
import pusherMiddleware from './services/pusher/middleware'
|
2016-10-14 22:42:45 +13:00
|
|
|
import mopidyMiddleware from './services/mopidy/middleware'
|
2016-10-16 12:37:37 +13:00
|
|
|
import spotifyMiddleware from './services/spotify/middleware'
|
2016-10-17 22:00:29 +13:00
|
|
|
import localstorageMiddleware from './services/localstorage/middleware'
|
2016-10-16 12:37:37 +13:00
|
|
|
|
|
|
|
|
let reducers = combineReducers({
|
2016-10-27 10:02:12 +13:00
|
|
|
ui,
|
2016-10-27 16:58:11 +13:00
|
|
|
pusher,
|
2016-10-16 12:37:37 +13:00
|
|
|
mopidy,
|
2016-11-07 21:21:15 +13:00
|
|
|
lastfm,
|
2016-10-16 12:37:37 +13:00
|
|
|
spotify
|
|
|
|
|
});
|
2016-10-03 15:22:15 +13:00
|
|
|
|
2016-10-18 08:56:53 +13:00
|
|
|
// set application defaults
|
2016-10-28 09:14:29 +13:00
|
|
|
// TODO: Look at using propTypes in the component for these falsy initial states
|
2016-10-18 08:56:53 +13:00
|
|
|
var initialState = {
|
|
|
|
|
mopidy: {
|
2016-10-28 09:14:29 +13:00
|
|
|
connected: false,
|
2016-10-18 08:56:53 +13:00
|
|
|
host: window.location.hostname,
|
2016-10-20 17:40:18 +13:00
|
|
|
port: 6680,
|
|
|
|
|
volume: 0,
|
2016-11-09 13:18:03 +13:00
|
|
|
progress: 0,
|
|
|
|
|
play_state: false
|
2016-10-18 21:57:29 +13:00
|
|
|
},
|
2016-10-27 16:58:11 +13:00
|
|
|
pusher: {
|
2016-10-28 09:14:29 +13:00
|
|
|
connected: false,
|
2016-10-29 22:40:02 +13:00
|
|
|
port: 6681,
|
2017-01-04 15:24:13 +13:00
|
|
|
username: 'Anonymous',
|
2016-11-06 15:47:37 +13:00
|
|
|
connections: [],
|
2016-10-29 22:40:02 +13:00
|
|
|
version: {
|
|
|
|
|
current: '0.0.0'
|
|
|
|
|
}
|
2016-10-27 16:58:11 +13:00
|
|
|
},
|
2016-11-07 21:21:15 +13:00
|
|
|
lastfm: {
|
|
|
|
|
album: {},
|
|
|
|
|
artist: {},
|
|
|
|
|
track: {}
|
|
|
|
|
},
|
2016-10-18 21:57:29 +13:00
|
|
|
spotify: {
|
2016-10-28 09:14:29 +13:00
|
|
|
connected: false,
|
2016-12-14 08:51:11 +13:00
|
|
|
me: false
|
2016-10-27 10:02:12 +13:00
|
|
|
},
|
|
|
|
|
ui: {
|
2016-11-09 13:18:03 +13:00
|
|
|
current_tracklist: [],
|
2016-11-09 15:49:25 +13:00
|
|
|
current_tltrack: false,
|
2016-12-13 11:08:13 +13:00
|
|
|
notifications: []
|
2016-10-18 08:56:53 +13:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// if we've got a stored version of mopidy state, load and merge
|
|
|
|
|
if( localStorage.getItem('mopidy') ){
|
|
|
|
|
var storedMopidy = JSON.parse( localStorage.getItem('mopidy') );
|
2016-10-19 14:09:34 +13:00
|
|
|
initialState.mopidy = Object.assign(initialState.mopidy, storedMopidy );
|
2016-10-17 10:39:11 +13:00
|
|
|
}
|
|
|
|
|
|
2016-10-27 16:58:11 +13:00
|
|
|
// if we've got a stored version of pusher state, load and merge
|
|
|
|
|
if( localStorage.getItem('pusher') ){
|
|
|
|
|
var storedPusher = JSON.parse( localStorage.getItem('pusher') );
|
|
|
|
|
initialState.pusher = Object.assign(initialState.pusher, storedPusher );
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-18 16:53:33 +13:00
|
|
|
// if we've got a stored version of spotify state, load and merge
|
|
|
|
|
if( localStorage.getItem('spotify') ){
|
|
|
|
|
var storedSpotify = JSON.parse( localStorage.getItem('spotify') );
|
2016-10-19 14:09:34 +13:00
|
|
|
initialState.spotify = Object.assign(initialState.spotify, storedSpotify );
|
2016-10-18 16:53:33 +13:00
|
|
|
}
|
|
|
|
|
|
2016-11-21 16:26:47 +13:00
|
|
|
// if we've got a stored version of spotify state, load and merge
|
|
|
|
|
if( localStorage.getItem('ui') ){
|
|
|
|
|
var storedUi = JSON.parse( localStorage.getItem('ui') );
|
|
|
|
|
initialState.ui = Object.assign(initialState.ui, storedUi );
|
|
|
|
|
}
|
|
|
|
|
|
2016-11-07 18:09:42 +13:00
|
|
|
console.log('Bootstrapping', initialState)
|
|
|
|
|
|
2016-10-14 22:42:45 +13:00
|
|
|
let store = createStore(
|
2016-10-16 12:37:37 +13:00
|
|
|
reducers,
|
2016-10-17 10:39:11 +13:00
|
|
|
initialState,
|
2016-11-11 16:47:32 +13:00
|
|
|
applyMiddleware( thunk, localstorageMiddleware, uiMiddleware, mopidyMiddleware, pusherMiddleware, spotifyMiddleware )
|
2016-10-14 22:42:45 +13:00
|
|
|
);
|
2016-10-03 16:55:33 +13:00
|
|
|
|
2016-10-03 15:22:15 +13:00
|
|
|
export default store;
|