UNPKG

stitch-ui

Version:

92 lines (88 loc) 2.89 kB
import { createReducer } from "redux-act"; import { OrderedMap, Map } from "immutable"; import * as actions from "./actions"; import Value from "../models/Value"; export default createReducer( { [actions.setNameError]: (state, nameError) => ({ ...state, nameError }), [actions.setNameInput]: (state, name) => ({ ...state, name, newValue: state.newValue.set("dirty", true) }), [actions.setPrivateChecked]: (state, { id, isPrivate }) => ({ ...state, values: state.values .setIn([id, "private"], isPrivate) .setIn([id, "dirty"], true) }), [actions.setNewPrivateChecked]: (state, { isPrivate }) => ({ ...state, newValue: state.newValue.set("private", isPrivate).set("dirty", true) }), [actions.setValueInput]: (state, { id, value }) => ({ ...state, values: state.values .setIn([id, "valueJson", "input"], value) .setIn([id, "dirty"], true) }), [actions.discardValueChanges]: (state, { id }) => ({ ...state, values: state.values.set(id, state.valuesClean.get(id)) }), [actions.discardNewValueChanges]: state => ({ ...state, newValue: new Value({}), name: "", nameError: null }), [actions.setNewValueInput]: (state, { value }) => ({ ...state, newValue: state.newValue .setIn(["valueJson", "input"], value) .set("dirty", true) }), [actions.setNewValueDirty]: (state, dirty) => ({ ...state, newValue: state.newValue.set("dirty", dirty) }), [actions.setNewValue]: (state, value) => ({ ...state, newValue: value }), [actions.setValue]: (state, { id, value }) => ({ ...state, values: state.values.set(id, value) }), [actions.updateValueActions.rcv]: (state, payload) => { const key = [payload.reqArgs[1], payload.reqArgs[2]].join("/"); return { ...state, saveErrors: state.saveErrors.set(key, null) }; }, [actions.updateValueActions.fail]: (state, payload) => { const key = [payload.reqArgs[1], payload.reqArgs[2]].join("/"); return { ...state, saveErrors: state.saveErrors.set(key, payload.error) }; }, [actions.loadValuesActions.req]: state => ({ ...state, error: null }), [actions.loadValuesActions.rcv]: (state, payload) => ({ ...state, error: null, values: new OrderedMap(payload.payload || {}).map(raw => Value.fromRaw(raw) ), valuesClean: new OrderedMap(payload.payload || {}).map(raw => Value.fromRaw(raw) ) }), [actions.loadValuesActions.fail]: (state, payload) => ({ ...state, values: {}, error: payload.error }) }, { error: null, name: "", nameError: null, newValue: new Value({}), values: new OrderedMap(), valuesClean: new OrderedMap(), saveErrors: new Map() } );