UNPKG

stitch-ui

Version:

79 lines (76 loc) 2.49 kB
import { createReducer } from "redux-act"; import { Map } from "immutable"; import * as actions from "./actions"; const updatePipeline = (state, pipelineKey, mutator) => state.pipelines.set(pipelineKey, mutator(state.pipelines.get(pipelineKey))); export default createReducer( { [actions.initPipeline]: (state, { pipelineKey, pipelineObj }) => ({ ...state, pipelines: state.pipelines.set(pipelineKey, pipelineObj), pipelinesClean: state.pipelines.set(pipelineKey, pipelineObj) }), [actions.discardChanges]: (state, { pipelineKey }) => ({ ...state, pipelines: state.pipelines.set( pipelineKey, state.pipelinesClean.get(pipelineKey) ) }), [actions.addStageAction]: (state, { pipelineKey }) => ({ ...state, pipelines: updatePipeline(state, pipelineKey, pipeline => pipeline.addStage() ) }), [actions.removeStageAction]: (state, { pipelineKey, index }) => ({ ...state, pipelines: updatePipeline(state, pipelineKey, pipeline => pipeline.removeStage(index) ) }), [actions.moveStageAction]: ( state, { pipelineKey, fromIndex, toIndex } ) => ({ ...state, pipelines: updatePipeline(state, pipelineKey, pipeline => pipeline.moveStage(fromIndex, toIndex) ) }), [actions.setOutputTypeAction]: (state, { pipelineKey, outputType }) => ({ ...state, pipelines: updatePipeline(state, pipelineKey, pipeline => pipeline.setOutputType(outputType) ) }), [actions.setStageAction]: (state, { pipelineKey, index, stage }) => ({ ...state, pipelines: updatePipeline(state, pipelineKey, pipeline => pipeline.setStage(index, stage) ) }), [actions.applyEditChange]: (state, { pipelineKey, index, mutator }) => ({ ...state, pipelines: updatePipeline(state, pipelineKey, pipeline => pipeline.applyEditChange(index, mutator) ) }), [actions.openEditorAction]: (state, { pipelineKey, index }) => ({ ...state, pipelines: updatePipeline(state, pipelineKey, pipeline => pipeline.startEditing(index) ) }), [actions.closeEditorAction]: (state, { pipelineKey, index }) => ({ ...state, pipelines: updatePipeline(state, pipelineKey, pipeline => pipeline.endEditing(index) ) }) }, { // A map of (pipelineKey) -> (models.Pipeline) pipelines: new Map() } );