123456789101112131415161718192021222324252627282930313233343536 |
- /* @flow */
- import _ from 'lodash';
-
- import { persistState } from './functions';
- import MiddlewareRegistry from './MiddlewareRegistry';
-
- import { toState } from '../redux';
-
- /**
- * The delay that passes between the last state change and the state to be
- * persisted in the storage.
- */
- const PERSIST_DELAY = 2000;
-
- /**
- * A throttled function to avoid repetitive state persisting.
- */
- const throttledFunc = _.throttle(state => {
- persistState(state);
- }, PERSIST_DELAY);
-
- /**
- * A master MiddleWare to selectively persist state. Please use the
- * {@link persisterconfig.json} to set which subtrees of the Redux state
- * should be persisted.
- *
- * @param {Store} store - The redux store.
- * @returns {Function}
- */
- MiddlewareRegistry.register(store => next => action => {
- const result = next(action);
-
- throttledFunc(toState(store));
-
- return result;
- });
|