redux-subscriber
Version:
Subscribe to changes in any part of redux state
45 lines (35 loc) • 1.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.subscribe = subscribe;
exports.default = function (store) {
var prevState = store.getState();
store.subscribe(function () {
var newState = store.getState();
Object.keys(subscribers).forEach(function (key) {
if ((0, _objectPath.get)(prevState, key) !== (0, _objectPath.get)(newState, key)) {
subscribers[key].forEach(function (cb) {
return cb(newState);
});
}
});
prevState = newState;
});
return subscribe;
};
var _objectPath = require('object-path');
var subscribers = {};
function subscribe(key, cb) {
if (subscribers.hasOwnProperty(key)) {
subscribers[key].push(cb);
} else {
subscribers[key] = [cb];
}
// return "unsubscribe" function
return function () {
subscribers[key] = subscribers[key].filter(function (s) {
return s !== cb;
});
};
}