Files
Iris/src/js/bootstrap.js

94 lines
2.5 KiB
JavaScript
Raw Normal View History

2016-10-03 15:22:15 +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'
import mopidy from './services/mopidy/reducer'
2016-11-07 21:21:15 +13:00
import lastfm from './services/lastfm/reducer'
import spotify from './services/spotify/reducer'
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'
import mopidyMiddleware from './services/mopidy/middleware'
import spotifyMiddleware from './services/spotify/middleware'
import localstorageMiddleware from './services/localstorage/middleware'
let reducers = combineReducers({
2016-10-27 10:02:12 +13:00
ui,
2016-10-27 16:58:11 +13:00
pusher,
mopidy,
2016-11-07 21:21:15 +13:00
lastfm,
spotify
});
2016-10-03 15:22:15 +13:00
2016-10-18 08:56:53 +13:00
// set application defaults
// TODO: Look at using propTypes in the component for these falsy initial states
2016-10-18 08:56:53 +13:00
var initialState = {
mopidy: {
connected: false,
2016-10-18 08:56:53 +13:00
host: window.location.hostname,
port: 6680,
volume: 0,
progress: 0,
play_state: false
},
2016-10-27 16:58:11 +13:00
pusher: {
connected: false,
port: 6681,
2017-01-04 15:24:13 +13:00
username: 'Anonymous',
2016-11-06 15:47:37 +13:00
connections: [],
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: {}
},
spotify: {
connected: false,
2016-12-14 08:51:11 +13:00
me: false
2016-10-27 10:02:12 +13:00
},
ui: {
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-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 );
}
// 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-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 );
}
console.log('Bootstrapping', initialState)
let store = createStore(
reducers,
initialState,
2016-11-11 16:47:32 +13:00
applyMiddleware( thunk, localstorageMiddleware, uiMiddleware, mopidyMiddleware, pusherMiddleware, spotifyMiddleware )
);
2016-10-03 15:22:15 +13:00
export default store;