Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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
  }
}