--- 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;
+};