@turbox3d/reactivity
Version:
Large-scale reactive state management library
32 lines • 1.08 kB
JavaScript
import { actionTypeChain } from '../core/store';
import { EMaterialType } from '../const/enums';
import { Action } from '../core/action';
import { normalNextReturn } from './common';
function createMutationMiddleware() {
return function () {
return function (next) {
return function (dispatchedAction) {
var name = dispatchedAction.name,
displayName = dispatchedAction.displayName,
type = dispatchedAction.type,
isInner = dispatchedAction.isInner;
if (isInner || type !== EMaterialType.MUTATION && type !== EMaterialType.UPDATE) {
return normalNextReturn(next, dispatchedAction);
}
if (Action.context) {
Action.context.historyNode.actionChain.push({
name: name,
displayName: displayName
});
} else {
actionTypeChain.push({
name: name,
displayName: displayName
});
}
return normalNextReturn(next, dispatchedAction);
};
};
};
}
export default createMutationMiddleware();