57 lines
1.3 KiB
JavaScript
57 lines
1.3 KiB
JavaScript
import {
|
|
createStore,
|
|
applyMiddleware,
|
|
compose
|
|
} from 'redux';
|
|
import thunk from 'redux-thunk';
|
|
import { createLogger } from 'redux-logger';
|
|
import { persistStore, persistReducer } from 'redux-persist';
|
|
import storage from 'redux-persist/lib/storage';
|
|
import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';
|
|
import rootReducer from './reducers/rootReducer';
|
|
|
|
const persistConfig =
|
|
{
|
|
key : 'root',
|
|
storage : storage,
|
|
stateReconciler : autoMergeLevel2,
|
|
whitelist : [ 'settings' ]
|
|
};
|
|
|
|
const reduxMiddlewares =
|
|
[
|
|
thunk
|
|
];
|
|
|
|
if (process.env.NODE_ENV !== 'production')
|
|
{
|
|
const reduxLogger = createLogger(
|
|
{
|
|
// filter VOLUME level actions from log
|
|
predicate : (getState, action) => !(action.type === 'SET_PEER_VOLUME'),
|
|
duration : true,
|
|
timestamp : false,
|
|
level : 'log',
|
|
logErrors : true
|
|
});
|
|
|
|
reduxMiddlewares.push(reduxLogger);
|
|
}
|
|
|
|
const composeEnhancers =
|
|
typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?
|
|
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}) :
|
|
compose;
|
|
|
|
const enhancer = composeEnhancers(
|
|
applyMiddleware(...reduxMiddlewares)
|
|
);
|
|
|
|
const pReducer = persistReducer(persistConfig, rootReducer);
|
|
|
|
export const store = createStore(
|
|
pReducer,
|
|
enhancer
|
|
);
|
|
|
|
export const persistor = persistStore(store); |