react-logo/frontend/src/reducers/chat.js

36 lines
904 B
JavaScript

import { LOGIN_SUCCESS, LOGIN_FAILURE } from '../actions/login';
import { FETCH_MESSAGES_SUCCESS } from '../actions/chat';
const defaultState = {
messagesByChannel: {},
}
export default function chatReducer(state = defaultState, action) {
switch (action.type) {
case FETCH_MESSAGES_SUCCESS:
return {
...state,
messagesByChannel: {
...state.messagesByChannel,
[action.channel]: [...action.data.Messages]
}
};
case 'CHANNEL_EVENT':
switch(action.event) {
case "message":
return {
...state,
messagesByChannel: {
...state.messagesByChannel,
[action.data.Channel]: [
...state.messagesByChannel[action.data.Channel],
action.data.Message
]
}
};
}
return state;
}
return state;
}