Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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