Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5307 | Rev 5320 | 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
 
5309 stevensc 13
const conversationReducer = (
14
  state = initialState,
15
  { type, payload }
16
) => {
5306 stevensc 17
  switch (type) {
5307 stevensc 18
    case conversationActionTypes.START_LOADING:
5309 stevensc 19
      return { ...state, loading: true }
20
 
21
    case conversationActionTypes.FINISH_LOADING:
22
      return { ...state, loading: false }
23
 
5307 stevensc 24
    case conversationActionTypes.SET_UPDATE_MESSAGES:
25
      return {
26
        ...state,
27
        messages: [payload, ...state.messages]
28
      }
5309 stevensc 29
 
5307 stevensc 30
    case conversationActionTypes.SET_MESSAGES:
31
      const newMessages = getMessagesDifferences(state.messages, payload)
32
 
33
      if (!newMessages.length) {
34
        return { ...state, messages: payload }
35
      }
36
 
37
      return {
38
        ...state,
39
        messages: [...state.messages, ...newMessages]
40
      }
5309 stevensc 41
 
5307 stevensc 42
    case conversationActionTypes.SET_NEW_MESSAGE:
43
      return {
44
        ...state,
5306 stevensc 45
        messages: [
46
          ...state.messages,
47
          {
48
            ...payload,
49
            not_received: !state.conversation.online
50
          }
51
        ]
52
      }
5309 stevensc 53
 
5306 stevensc 54
    default:
55
      return state
56
  }
57
}
5309 stevensc 58
 
59
export default conversationReducer