stitch-ui
Version:
52 lines (49 loc) • 1.57 kB
JavaScript
import { createReducer } from "redux-act";
import { Map } from "immutable";
import * as actions from "./actions";
import { FIELD_TEXT, FIELD_LABEL, FIELD_TOPIC } from "./constants";
const setError = (state, { error }) => ({ ...state, modalError: error });
export default createReducer(
{
[actions.setNewMessageText]: (state, { input }) => ({
...state,
newMessage: state.newMessage.set(FIELD_TEXT, input)
}),
[actions.setNewMessageLabel]: (state, { input }) => ({
...state,
newMessage: state.newMessage.set(FIELD_LABEL, input)
}),
[actions.setNewMessageTopic]: (state, { input }) => ({
...state,
newMessage: state.newMessage.set(FIELD_TOPIC, input)
}),
[actions.loadMessagesActions.req]: state => ({
...state,
messages: [],
loadingMessages: true
}),
[actions.loadMessagesActions.rcv]: (state, { payload }) => ({
...state,
messages: payload,
loadingMessagesError: null,
loadingMessages: false
}),
[actions.loadMessagesActions.fail]: (state, { error }) => ({
...state,
loadingMessagesError: error,
loadingMessages: false
}),
[actions.executePushPipelineActions.fail]: setError,
[actions.saveMessageActions.fail]: setError,
[actions.createMessageActions.fail]: setError,
[actions.setMessageStatusActions.fail]: setError,
[actions.setNewMessageError]: setError
},
{
newMessage: new Map(),
messages: [],
modalError: null,
loadingMessagesError: null,
loadingMessages: false
}
);