Source code

Revision control

Copy as Markdown

Other Tools

/* 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 },
};