Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5306 | Rev 5309 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
5307 stevensc 1
/* eslint-disable no-case-declarations */
2
import { getMessagesDifferences } from '../../services/chat'
3
import { conversationActionTypes } from './conversation.types'
5306 stevensc 4
 
5
const initialState = {
6
  messages: [],
7
  currentPage: 1,
8
  lastPage: 1,
9
  loading: false,
10
  conversation: {}
11
}
12
 
13
export default (state = initialState, { type, payload }) => {
14
  switch (type) {
5307 stevensc 15
    case conversationActionTypes.START_LOADING:
5306 stevensc 16
      return {
17
        ...state,
5307 stevensc 18
        loading: true
19
      }
20
    case conversationActionTypes.SET_UPDATE_MESSAGES:
21
      return {
22
        ...state,
23
        messages: [payload, ...state.messages]
24
      }
25
    case conversationActionTypes.SET_MESSAGES:
26
 
27
      const newMessages = getMessagesDifferences(state.messages, payload)
28
 
29
      if (!newMessages.length) {
30
        return { ...state, messages: payload }
31
      }
32
 
33
      return {
34
        ...state,
35
        messages: [...state.messages, ...newMessages]
36
      }
37
    case conversationActionTypes.SET_NEW_MESSAGE:
38
      return {
39
        ...state,
5306 stevensc 40
        messages: [
41
          ...state.messages,
42
          {
43
            ...payload,
44
            not_received: !state.conversation.online
45
          }
46
        ]
47
      }
48
    default:
49
      return state
50
  }
51
}