strapi-plugin-config-sync/admin/src/helpers/configureStore.js

68 lines
1.7 KiB
JavaScript
Raw Normal View History

2021-03-20 00:54:18 +01:00
import { createStore, applyMiddleware, compose } from 'redux';
import { createLogger } from 'redux-logger';
import thunkMiddleware from 'redux-thunk';
import { Map } from 'immutable';
import rootReducer from '../state/reducers';
import loggerConfig from '../config/logger';
import { __DEBUG__ } from '../config/constants';
const configureStore = () => {
let initialStoreState = Map();
const enhancers = [];
const middlewares = [
thunkMiddleware,
];
let devtools;
if (__DEBUG__) {
devtools = (
typeof window !== 'undefined'
&& typeof window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ === 'function'
&& window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ actionsBlacklist: [] })
);
if (devtools) {
console.info('[setup] ✓ Enabling Redux DevTools Extension');
}
console.info('[setup] ✓ Enabling state logger');
const loggerMiddleware = createLogger({
level: 'info',
collapsed: true,
stateTransformer: (state) => state.toJS(),
predicate: (getState, action) => {
const state = getState();
const showBlacklisted = state.getIn(['debug', 'logs', 'blacklisted']);
if (loggerConfig.blacklist.indexOf(action.type) !== -1 && !showBlacklisted) {
return false;
}
return state.getIn(['debug', 'logs', 'enabled']);
},
});
middlewares.push(loggerMiddleware);
}
const composedEnhancers = devtools || compose;
const storeEnhancers = composedEnhancers(
applyMiddleware(...middlewares),
...enhancers
);
const store = createStore(
rootReducer,
initialStoreState,
storeEnhancers,
);
return store;
};
export default configureStore;
export const store = configureStore();