Rev 5320 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
/* eslint-disable no-case-declarations */
import { getMessagesDifferences } from '../../services/chat'
import { conversationActionTypes } from './conversation.types'
const initialState = [
{
id: '',
lastPage: 1,
currentPage: 1,
loading: false,
online: false,
messages: []
}
]
const conversationReducer = (
state = initialState,
{ type, payload }
) => {
switch (type) {
case conversationActionTypes.START_LOADING:
return { ...state, loading: true }
case conversationActionTypes.FINISH_LOADING:
return { ...state, loading: false }
case conversationActionTypes.SET_UPDATE_MESSAGES:
return {
...state,
messages: [payload, ...state.messages]
}
case conversationActionTypes.SET_MESSAGES:
const newMessages = getMessagesDifferences(state.messages, payload)
if (!newMessages.length) {
return { ...state, messages: payload }
}
return {
...state,
messages: [...state.messages, ...newMessages]
}
case conversationActionTypes.SET_NEW_MESSAGE:
return {
...state,
messages: [
...state.messages,
{
...payload,
not_received: !state.conversation.online
}
]
}
default:
return state
}
}
export default conversationReducer