-
Notifications
You must be signed in to change notification settings - Fork 4.3k
/
Copy pathstore.js
49 lines (42 loc) · 1.22 KB
/
store.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
* External dependencies
*/
import { applyMiddleware, createStore } from 'redux';
import refx from 'refx';
import multi from 'redux-multi';
import { flowRight } from 'lodash';
/**
* Internal dependencies
*/
import effects from './effects';
import { mobileMiddleware } from './utils/mobile';
import reducer from './reducer';
import storePersist from './store-persist';
import { PREFERENCES_DEFAULTS } from './store-defaults';
/**
* Module constants
*/
const GUTENBERG_PREFERENCES_KEY = `GUTENBERG_PREFERENCES_${ window.userSettings.uid }`;
/**
* Creates a new instance of a Redux store.
*
* @param {?*} preloadedState Optional initial state
* @return {Redux.Store} Redux store
*/
function createReduxStore( preloadedState ) {
const enhancers = [
applyMiddleware( multi, refx( effects ) ),
storePersist( {
reducerKey: 'preferences',
storageKey: GUTENBERG_PREFERENCES_KEY,
defaults: PREFERENCES_DEFAULTS,
} ),
applyMiddleware( mobileMiddleware ),
];
if ( window.__REDUX_DEVTOOLS_EXTENSION__ ) {
enhancers.push( window.__REDUX_DEVTOOLS_EXTENSION__() );
}
const store = createStore( reducer, preloadedState, flowRight( enhancers ) );
return store;
}
export default createReduxStore;