40 lines
917 B
JavaScript
40 lines
917 B
JavaScript
|
/* @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);
|
||
|
});
|