123456789101112131415161718192021222324252627282930313233343536373839 |
- /* @flow */
-
- import { MiddlewareRegistry } from '../base/redux';
-
- import {
- CLEAR_TOOLBOX_TIMEOUT,
- SET_TOOLBOX_TIMEOUT
- } from './actionTypes';
-
- /**
- * Middleware which intercepts Toolbox actions to handle changes to the
- * visibility timeout of the Toolbox.
- *
- * @param {Store} store - Redux store.
- * @returns {Function}
- */
- MiddlewareRegistry.register(store => next => action => {
- switch (action.type) {
- case CLEAR_TOOLBOX_TIMEOUT: {
- const { timeoutID } = store.getState()['features/toolbox'];
-
- clearTimeout(timeoutID);
- break;
- }
-
- case SET_TOOLBOX_TIMEOUT: {
- const { timeoutID } = store.getState()['features/toolbox'];
- const { handler, timeoutMS } = action;
-
- clearTimeout(timeoutID);
- const newTimeoutId = setTimeout(handler, timeoutMS);
-
- action.timeoutID = newTimeoutId;
- break;
- }
- }
-
- return next(action);
- });
|