stitch-ui
Version:
45 lines (43 loc) • 1.37 kB
JavaScript
import { createReducer } from "redux-act";
import { OrderedMap } from "immutable";
import * as actions from "./actions";
import * as svcActions from "../actions";
import Rule from "./rule";
export default createReducer(
{
[svcActions.loadSvcActions.rcv]: (state, payload) => {
if (payload.payload.type === "mongodb") {
return state;
}
return {
...state,
rules: new OrderedMap(payload.payload.rules || {}).map((raw, _id) =>
Rule.fromRawRule(raw).set("_id", _id)
),
rulesClean: new OrderedMap(
payload.payload.rules || {}
).map((raw, _id) => Rule.fromRawRule(raw).set("_id", _id))
};
},
[actions.discardChanges]: (state, { ruleId }) => ({
...state,
rules: state.rules.set(ruleId, state.rulesClean.get(ruleId))
}),
[actions.setRule]: (state, { ruleId, rule }) => ({
...state,
rules: state.rules.set(ruleId, rule)
}),
[actions.setRuleWhen]: (state, { ruleId, value }) => ({
...state,
rules: state.rules.updateIn([ruleId], r => r.updateWhenInput(value))
}),
[actions.setRuleAction]: (state, { ruleId, action, enabled }) => ({
...state,
rules: state.rules.updateIn([ruleId], r => r.setAction(action, enabled))
})
},
{
rules: new OrderedMap(),
rulesClean: new OrderedMap()
}
);