github.com/stampzilla/stampzilla-go@v2.0.0-rc9+incompatible/nodes/stampzilla-server/web/src/store.js (about)

     1  import { applyMiddleware, compose, createStore } from 'redux';
     2  import Immutable from 'immutable';
     3  import ReduxThunk from 'redux-thunk';
     4  import persistState from 'redux-localstorage';
     5  
     6  import rootReducer from './ducks';
     7  import rules from './middlewares/rules';
     8  import schedules from './middlewares/schedules';
     9  import savedstates from './middlewares/savedstates';
    10  
    11  const middleware = [ReduxThunk, rules, schedules, savedstates];
    12  
    13  const preloadedState = undefined;
    14  
    15  const composeEnhancers =
    16    (typeof window !== 'undefined' &&
    17      window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || // eslint-disable-line no-underscore-dangle
    18    compose;
    19  
    20  const localStorageConfig = {
    21    slicer: paths => state =>
    22      (paths ? state.filter((v, k) => paths.indexOf(k) > -1) : state),
    23    serialize: subset => JSON.stringify(subset.toJS()),
    24    deserialize: serializedData =>
    25      Immutable.fromJS(JSON.parse(serializedData)) || Immutable.Map(),
    26    merge: (initialState, persistedState) =>
    27      (initialState ? initialState.mergeDeep(persistedState) : persistedState),
    28  };
    29  
    30  const newStore = (initialState, extraMiddlewares = []) =>
    31    createStore(
    32      rootReducer,
    33      initialState,
    34      composeEnhancers(
    35        applyMiddleware(...extraMiddlewares, ...middleware),
    36        persistState(['app'], localStorageConfig),
    37      ),
    38    );
    39  const store = newStore(preloadedState);
    40  
    41  export default store;
    42  export { newStore };