38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
"use strict";
|
|
|
|
const IGNORING = Symbol("IGNORING");
|
|
const START_IGNORE_ACTION = "START_IGNORE_ACTION";
|
|
|
|
/**
|
|
* A middleware that prevents any action of being called once it is activated.
|
|
* This is useful to apply while destroying a given panel, as it will ignore all calls
|
|
* to actions, where we usually make our client -> server communications.
|
|
* This middleware should be declared before any other middleware to to effectively
|
|
* ignore every actions.
|
|
*/
|
|
function ignore({ getState }) {
|
|
return next => action => {
|
|
if (action.type === START_IGNORE_ACTION) {
|
|
getState()[IGNORING] = true;
|
|
return null;
|
|
}
|
|
|
|
if (getState()[IGNORING]) {
|
|
// We only print the action type, and not the whole action object, as it can holds
|
|
// very complex data that would clutter stdout logs and make them impossible
|
|
// to parse for treeherder.
|
|
console.warn("IGNORED REDUX ACTION:", action.type);
|
|
return null;
|
|
}
|
|
|
|
return next(action);
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
ignore,
|
|
START_IGNORE_ACTION: { type: START_IGNORE_ACTION },
|
|
};
|