stitch-ui
Version:
106 lines (98 loc) • 2.89 kB
JavaScript
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;