UNPKG

stitch-ui

Version:

106 lines (98 loc) 2.89 kB
import { createReducer } from "redux-act"; import { combineReducers } from "redux"; import { Map } from "immutable"; import * as actions from "./actions"; import mongoReducer from "./mongodb/reducers"; import defaultReducer from "./default/reducers"; const serviceReducers = combineReducers({ mongodb: mongoReducer, default: defaultReducer }); const basicServiceReducer = createReducer( { [actions.saveSvcConfigActions.req]: state => ({ ...state, savingConfig: true, configSaveError: null }), [actions.saveSvcConfigActions.rcv]: state => ({ ...state, savingConfig: false, configSaveError: null }), [actions.saveSvcConfigActions.fail]: (state, payload) => ({ ...state, savingConfig: false, configSaveError: payload.error }), [actions.loadSvcActions.req]: (state, payload) => ({ ...state, loadingSvc: true, switchingSvc: payload[3] ? payload[3].switching : false, configSaveError: null }), [actions.loadSvcActions.rcv]: (state, payload) => ({ ...state, service: payload.payload, configInput: new Map(payload.payload.config), loadingSvc: false, serviceName: payload.payload.name }), [actions.loadSvcActions.fail]: (state, payload) => ({ ...state, loadServiceError: payload.payload, loadingSvc: false, serviceName: "" }), [actions.setConfigInput]: (state, { key, value }) => ({ ...state, configInput: state.configInput.set(key, value) }), [actions.setRuleErrorAction]: (state, { ruleId, error }) => ({ ...state, ruleSaveState: state.ruleSaveState.setIn([ruleId, "error"], error) }), [actions.updateSvcRuleActions.req]: (state, payload) => { const ruleId = payload[2]; return { ...state, ruleSaveState: state.ruleSaveState.setIn([ruleId, "saving"], true) }; }, [actions.updateSvcRuleActions.rcv]: (state, payload) => { const ruleId = payload.reqArgs[3]; return { ...state, ruleSaveState: state.ruleSaveState .setIn([ruleId, "error"], null) .setIn([ruleId, "saving"], false) }; }, [actions.updateSvcRuleActions.fail]: (state, payload) => { const ruleId = payload.reqArgs[3]; return { ...state, ruleSaveState: state.ruleSaveState .setIn([ruleId, "error"], payload.error) .setIn([ruleId, "saving"], false) }; } }, { serviceName: "", config: null, configInput: new Map(), configSaveError: null, saving: false, ruleSaveState: new Map(), error: null, loadingSvc: false, switchingSvc: false, savingConfig: false } ); const serviceReducer = combineReducers({ serviceTypes: serviceReducers, base: basicServiceReducer }); export default serviceReducer;