| author | Alexandre Segura <mex.zktk@gmail.com> |
| Wed, 31 May 2017 17:51:54 +0200 | |
| changeset 12 | 48ddaa42b810 |
| parent 3 | 3b5d37d84cfe |
| child 14 | df6780e48eb5 |
| permissions | -rw-r--r-- |
| 1 | 1 |
import rootReducer from '../reducers'; |
|
12
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
2 |
import { createStore, applyMiddleware } from 'redux'; |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
3 |
import { routerMiddleware } from 'react-router-redux'; |
| 1 | 4 |
import Immutable from 'immutable'; |
5 |
||
|
12
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
6 |
const loadState = () => { |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
7 |
try { |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
8 |
const serializedState = localStorage.getItem('state'); |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
9 |
if (!serializedState) { |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
10 |
return {}; |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
11 |
} |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
12 |
return JSON.parse(serializedState); |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
13 |
} catch (err) {} |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
14 |
} |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
15 |
|
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
16 |
const saveState = (state) => { |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
17 |
try { |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
18 |
localStorage.setItem('state', JSON.stringify(state)); |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
19 |
} catch (err) {} |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
20 |
} |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
21 |
|
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
22 |
const savedState = loadState(); |
| 1 | 23 |
|
|
12
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
24 |
const defaultState = { |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
25 |
currentSession: null, |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
26 |
sessions: Immutable.List(savedState.sessions || []), |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
27 |
notes: Immutable.List(savedState.notes || []), |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
28 |
isAuthenticated: false, |
| 1 | 29 |
}; |
|
12
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
30 |
|
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
31 |
const storeInitialState = Immutable.Map(defaultState); |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
32 |
|
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
33 |
export default (history, initialState = storeInitialState) => { |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
34 |
|
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
35 |
const middleware = routerMiddleware(history); |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
36 |
const store = createStore(rootReducer, initialState, applyMiddleware(middleware)); |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
37 |
|
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
38 |
store.subscribe(() => { |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
39 |
const state = store.getState().toJSON(); |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
40 |
const stateToPersist = { |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
41 |
sessions: state.sessions, |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
42 |
notes: state.notes, |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
43 |
}; |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
44 |
|
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
45 |
saveState(stateToPersist); |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
46 |
}); |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
47 |
|
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
48 |
return store; |
|
48ddaa42b810
Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
3
diff
changeset
|
49 |
}; |