stitch-ui
Version:
77 lines (73 loc) • 1.94 kB
JavaScript
import { createReducer } from "redux-act";
import * as actions from "./actions";
export default createReducer(
{
// TODO just use local state, not redux, for modal open/close state.
[actions.showNewAppModal]: state => ({
...state,
showNewAppModal: true
}),
[actions.hideNewAppModal]: state => ({
...state,
showNewAppModal: false,
createAppError: null
}),
[actions.loadAppsActions.req]: state => ({
...state,
loading: true
}),
[actions.loadAppsActions.rcv]: (state, payload) => ({
...state,
loading: false,
apps: payload.payload,
error: null
}),
[actions.loadAppsActions.fail]: (state, payload) => ({
...state,
loading: false,
error: payload.error
}),
[actions.createAppActions.req]: state => ({
...state,
creatingApp: true
}),
[actions.createAppActions.rcv]: state => ({
...state,
creatingApp: false,
createAppError: null
}),
[actions.createAppActions.fail]: (state, payload) => ({
...state,
creatingApp: false,
createAppError: payload.error
}),
[actions.setCreateAppError]: (state, payload) => ({
...state,
createAppError: payload
}),
[actions.deleteAppActions.req]: state => ({ ...state, deletingApp: true }),
[actions.deleteAppActions.rcv]: state => ({ ...state, deletingApp: false }),
[actions.deleteAppActions.fail]: (state, payload) => ({
...state,
deletingApp: false,
error: payload.error
}),
[actions.toggleGroupDropdown]: state => ({
...state,
isGroupDropdownOpen: !state.isGroupDropdownOpen
}),
[actions.setGroupId]: (state, id) => ({
...state,
groupId: id
})
},
{
groupId: null,
isGroupDropdownOpen: false,
apps: [],
loading: false,
showNewAppModal: false,
createAppError: null,
error: null
}
);