UNPKG

stitch-ui

Version:

110 lines (103 loc) 2.7 kB
import { combineReducers } from "redux"; import { createReducer } from "redux-act"; import * as actions from "./actions"; import * as homeActions from "../home/actions"; const modalInitialState = { selectedType: "", canSubmit: false, name: "", error: null }; const rootInitialState = { app: null, apps: [], services: {}, loadingApp: false, loadingSvcs: false, newServiceModalOpen: false, collectionName: "", dbName: "" }; const addServiceModalReducer = createReducer( { [homeActions.loadAppsActions.req]: state => ({ ...state, loading: true }), [homeActions.loadAppsActions.rcv]: (state, payload) => ({ ...state, loading: false, apps: payload.payload }), [homeActions.loadAppsActions.fail]: (state, payload) => ({ ...state, loading: false, loadAppsError: payload.error }), [actions.createServiceActions.req]: state => ({ ...state, creating: true }), [actions.createServiceActions.rcv]: state => ({ ...state, createServiceError: null, creating: false, selectedType: "", name: "" }), [actions.createServiceActions.fail]: (state, payload) => ({ ...state, creating: false, createServiceError: payload.error }), [actions.selectType]: (state, payload) => ({ ...state, selectedType: payload, canSubmit: state.name.length > 0 && payload.length > 0 }), [actions.setSvcName]: (state, payload) => ({ ...state, name: payload, canSubmit: payload.length > 0 && state.selectedType.length > 0 }) }, modalInitialState ); const rootReducer = createReducer( { [actions.loadAppActions.req]: state => ({ ...state, loadingApp: true }), [actions.loadAppActions.rcv]: (state, payload) => ({ ...state, loadingApp: false, app: payload.payload }), [actions.loadAppActions.fail]: (state, payload) => ({ ...state, error: payload.error }), [actions.loadServicesActions.req]: state => ({ ...state, loadingSvcs: true }), [actions.loadServicesActions.rcv]: (state, payload) => ({ ...state, loadingSvcs: false, services: payload.payload }), [actions.loadServicesActions.fail]: (state, payload) => ({ ...state, loadingSvcs: false, error: payload.error }), [actions.setDB]: (state, { db }) => ({ ...state, dbName: db }), [actions.setCollection]: (state, { collection }) => ({ ...state, collectionName: collection }) }, rootInitialState ); export default combineReducers({ root: rootReducer, addServiceModal: addServiceModalReducer });