multiparty-meeting/app/src/store.js

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);