Skip to content

Commit 9d1ec84

Browse files
committed
Filter actions
1 parent aede8b5 commit 9d1ec84

File tree

1 file changed

+33
-3
lines changed

1 file changed

+33
-3
lines changed

src/browser/extension/inject/pageScript.js

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,42 @@ import { isAllowed } from '../options/syncOptions';
66
window.devToolsExtension = function(next) {
77
function devToolsInit(store) {
88
if (!window.devToolsOptions) window.devToolsOptions = {};
9-
let timeout = { id: null, last: 0};
9+
let timeout = { id: null, last: 0 };
10+
let filtered = { last: null, post: false, skip: false };
1011

11-
function doChange(init) {
12+
function checkState() {
13+
filtered.post = true;
1214
const state = store.liftedStore.getState();
15+
if (window.devToolsOptions.filter) {
16+
if (filtered.skip) filtered.skip = false;
17+
else {
18+
const actionType = state.actionsById[state.nextActionId - 1].action.type;
19+
const { whitelist, blacklist } = window.devToolsOptions;
20+
if (
21+
whitelist && whitelist.indexOf(actionType) === -1 ||
22+
blacklist && blacklist.indexOf(actionType) !== -1
23+
) filtered.post = false;
24+
}
25+
}
26+
return state;
27+
}
28+
29+
function doChange(init) {
30+
const state = filtered.last || checkState();
31+
32+
if (!filtered.post) return;
33+
filtered.last = null; filtered.post = false;
34+
1335
if (window.devToolsOptions.limit && state.currentStateIndex > window.devToolsOptions.limit) {
1436
store.liftedStore.dispatch({type: COMMIT, timestamp: Date.now()});
1537
return;
1638
}
39+
40+
if (window.devToolsOptions.filter) {
41+
const { whitelist, blacklist } = window.devToolsOptions;
42+
state.filter = { whitelist, blacklist };
43+
}
44+
1745
window.postMessage({
1846
payload: typeof window.devToolsOptions.serialize === 'undefined' || window.devToolsOptions.serialize ? stringify(state) : state,
1947
source: 'redux-page',
@@ -22,6 +50,8 @@ window.devToolsExtension = function(next) {
2250
}
2351

2452
function onChange(init) {
53+
if (window.devToolsOptions.filter) filtered.last = checkState();
54+
2555
if (init || !window.devToolsOptions.timeout) doChange(init);
2656
else if (!timeout.last) {
2757
doChange();
@@ -49,7 +79,7 @@ window.devToolsExtension = function(next) {
4979
}
5080

5181
if (message.type === ACTION) {
52-
timeout.last = 0;
82+
timeout.last = 0; filtered.skip = true;
5383
store.liftedStore.dispatch(message.payload);
5484
} else if (message.type === UPDATE) {
5585
onChange();

0 commit comments

Comments
 (0)