diff -r 6fb4de54acea -r 48ddaa42b810 client/src/store/configureStore.js --- a/client/src/store/configureStore.js Wed May 31 17:28:12 2017 +0200 +++ b/client/src/store/configureStore.js Wed May 31 17:51:54 2017 +0200 @@ -1,11 +1,49 @@ import rootReducer from '../reducers'; -import {createStore} from 'redux'; +import { createStore, applyMiddleware } from 'redux'; +import { routerMiddleware } from 'react-router-redux'; import Immutable from 'immutable'; -const storeInitialState = Immutable.Map({ - notes: Immutable.List([]) -}); +const loadState = () => { + try { + const serializedState = localStorage.getItem('state'); + if (!serializedState) { + return {}; + } + return JSON.parse(serializedState); + } catch (err) {} +} + +const saveState = (state) => { + try { + localStorage.setItem('state', JSON.stringify(state)); + } catch (err) {} +} + +const savedState = loadState(); -export default (initialState = storeInitialState) => { - return createStore(rootReducer, initialState); +const defaultState = { + currentSession: null, + sessions: Immutable.List(savedState.sessions || []), + notes: Immutable.List(savedState.notes || []), + isAuthenticated: false, }; + +const storeInitialState = Immutable.Map(defaultState); + +export default (history, initialState = storeInitialState) => { + + const middleware = routerMiddleware(history); + const store = createStore(rootReducer, initialState, applyMiddleware(middleware)); + + store.subscribe(() => { + const state = store.getState().toJSON(); + const stateToPersist = { + sessions: state.sessions, + notes: state.notes, + }; + + saveState(stateToPersist); + }); + + return store; +};