ayanami
Version:
A better way to react with state
49 lines (48 loc) • 1.42 kB
JavaScript
import noop from 'lodash/noop';
var FakeReduxDevTools = {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
connect: function (_config) { return ({ send: noop, init: noop }); },
};
var ReduxDevTools = (typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__) ||
FakeReduxDevTools;
var STATE = {};
var getDevTools = (function () {
var devTools;
return function () {
if (!devTools) {
devTools = ReduxDevTools.connect({ name: "Ayanami" });
devTools.init({});
}
return devTools;
};
})();
var isEnableLog = false;
export function enableReduxLog() {
isEnableLog = true;
}
export function disableReduxLog() {
isEnableLog = false;
}
export function logStateAction(namespace, infos) {
if (isEnableLog) {
var action = {
type: namespace + "/" + infos.actionName,
params: filterParams(infos.params),
};
if (infos.state) {
STATE[namespace] = infos.state;
}
getDevTools().send(action, STATE);
}
}
function filterParams(params) {
if (params && typeof params === 'object') {
if (params instanceof Event) {
return "<<Event:" + params.type + ">>";
}
else if (params.nativeEvent instanceof Event) {
return "<<SyntheticEvent:" + params.nativeEvent.type + ">>";
}
}
return params;
}