Rev 5306 | Rev 5309 | Ir a la última revisión | 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 = {
messages: [],
currentPage: 1,
lastPage: 1,
loading: false,
conversation: {}
}
export default (state = initialState, { type, payload }) => {
switch (type) {
case conversationActionTypes.START_LOADING:
return {
...state,
loading: true
}
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
}
}