stitch-ui
Version:
101 lines (99 loc) • 3.02 kB
JavaScript
import { createReducer } from "redux-act";
import { OrderedMap } from "immutable";
import { NamedPipeline } from "../models";
import * as actions from "./actions";
export default createReducer(
{
[actions.setEditing]: (state, payload) => ({
...state,
editing: payload ? payload.value : payload,
savePipelineError: null
}),
[actions.discardChanges]: state => ({
...state,
editing: state.editing.name
? state.namedPipelinesClean.get(state.editing.name)
: actions.defaultNamedPipeline,
savePipelineError: null
}),
[actions.loadPipelinesActions.req]: state => ({
...state,
error: null,
savePipelineError: null
}),
[actions.loadPipelinesActions.rcv]: (state, payload) => ({
...state,
namedPipelines: new OrderedMap(payload.payload).map(v => ({
error: null,
value: v
})),
namedPipelinesClean: new OrderedMap(payload.payload).map(v =>
NamedPipeline.fromRaw(v)
)
}),
[actions.loadPipelinesActions.fail]: (state, { error }) => ({
...state,
namedPipelines: {},
error
}),
[actions.updatePipelineActions.req]: state => ({
...state,
savingPipeline: true
}),
[actions.updatePipelineActions.rcv]: state => ({
...state,
savingPipeline: false
}),
[actions.updatePipelineActions.fail]: (state, { error }) => ({
...state,
savePipelineError: { submit: error },
savingPipeline: false
}),
[actions.setSavePipelineErrorAction]: (state, payload) => ({
...state,
savePipelineError: payload
}),
[actions.updateParameter]: (state, { index, parameter }) => ({
...state,
editing: state.editing
.setIn(["parameters", index], parameter)
.set("dirty", true)
}),
[actions.removeParameter]: (state, { index }) => ({
...state,
editing: state.editing.removeIn(["parameters", index]).set("dirty", true)
}),
[actions.addParameter]: state => ({
...state,
editing: state.editing
.updateIn(["parameters"], p => p.push({ name: "", required: false }))
.set("dirty", true)
}),
[actions.setPrivate]: (state, { isPrivate }) => ({
...state,
editing: state.editing.set("private", isPrivate).set("dirty", true)
}),
[actions.setSkipRules]: (state, { skipRules }) => ({
...state,
editing: state.editing.set("skipRules", skipRules).set("dirty", true)
}),
[actions.updateCanEvalInput]: (state, { value }) => ({
...state,
editing: state.editing
.setIn(["canEvaluate", "input"], value)
.set("dirty", true)
}),
[actions.setCanEval]: (state, { canEval }) => ({
...state,
editing: state.editing.set("canEvaluate", canEval)
})
},
{
error: null,
savePipelineError: null,
editing: null,
savingPipeline: false,
namedPipelines: new OrderedMap(),
namedPipelinesClean: new OrderedMap()
}
);