Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5246 | Rev 5248 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 5246 Rev 5247
Línea 8... Línea 8...
8
import { useDispatch } from 'react-redux'
8
import { useDispatch } from 'react-redux'
9
import { fetchMessages, getMessagesDifferences } from '../../services/chat'
9
import { fetchMessages, getMessagesDifferences } from '../../services/chat'
10
import { addNotification } from '../../redux/notification/notification.actions'
10
import { addNotification } from '../../redux/notification/notification.actions'
11
import { axios, scrollToBottom } from '../../utils'
11
import { axios, scrollToBottom } from '../../utils'
12
import { ArrowLeft } from '@mui/icons-material'
12
import { ArrowLeft } from '@mui/icons-material'
13
import { Spinner } from 'react-bootstrap'
-
 
Línea 14... Línea 13...
14
 
13
 
Línea 15... Línea 14...
15
const DEFAULT_PAGES = { current: 1, last: 1 }
14
const DEFAULT_PAGES = { current: 1, last: 1 }
16
 
15
 
Línea 34... Línea 33...
34
 
33
 
35
        dispatch(addNotification({ style: 'danger', msg: errorMessage.message }))
34
        dispatch(addNotification({ style: 'danger', msg: errorMessage.message }))
36
        return
35
        return
Línea -... Línea 36...
-
 
36
      }
37
      }
37
 
-
 
38
      if (response.pagination.current > 1) setOldMessages([...response.data, ...oldMessages])
-
 
39
      setPages((prevPages) => ({ ...prevPages, last: response.pagination.last }))
-
 
40
 
-
 
41
      return
-
 
42
    } catch (error) {
-
 
43
      const errorMessage = new Error(error)
-
 
44
      console.log('Request canceled', errorMessage)
-
 
45
    } finally {
-
 
46
      setLoading(false)
Línea -... Línea 47...
-
 
47
    }
-
 
48
  }
-
 
49
 
-
 
50
  const hearBeat = async () => {
-
 
51
    try {
38
 
52
      setLoading(true)
39
      const newMessages = getMessagesDifferences(messages, response.data)
53
      const response = await fetchMessages(selectedConversation.messages_link, 1)
-
 
54
 
-
 
55
      if (!response.success) {
-
 
56
        const errorMessage = response.data
40
 
57
 
Línea -... Línea 58...
-
 
58
        dispatch(addNotification({ style: 'danger', msg: errorMessage.message }))
-
 
59
        return
41
      if (response.pagination.current > 1) {
60
      }
42
        setOldMessages([...response.data, ...oldMessages])
61
 
43
      }
62
      const newMessages = getMessagesDifferences(messages, response.data)
44
 
63
 
45
      if (newMessages.length) {
64
      if (newMessages.length) {
Línea 70... Línea 89...
70
      const errorMessage = new Error(error)
89
      const errorMessage = new Error(error)
71
      dispatch(addNotification({ style: 'danger', msg: errorMessage.message }))
90
      dispatch(addNotification({ style: 'danger', msg: errorMessage.message }))
72
    }
91
    }
73
  }
92
  }
Línea 74... Línea -...
74
 
-
 
75
  const changeConversation = (conversation) => {
-
 
76
    setPages(DEFAULT_PAGES)
-
 
77
    setConversation(conversation)
-
 
78
    getMessages(selectedConversation.messages_link)
-
 
79
  }
-
 
80
 
93
 
81
  const loadMore = async () => {
94
  const loadMore = async () => {
82
    setPages((prevPages) => ({ ...prevPages, current: prevPages.current + 1 }))
95
    setPages((prevPages) => ({ ...prevPages, current: prevPages.current + 1 }))
Línea 83... Línea 96...
83
  }
96
  }
84
 
-
 
85
  useEffect(() => {
97
 
86
    let timer
-
 
87
    if (!loading && selectedConversation) timer = setTimeout(() => getMessages(selectedConversation.messages_link), 2000)
-
 
88
    return () => {
-
 
89
      clearTimeout(timer)
98
  useEffect(() => {
Línea 90... Línea 99...
90
    }
99
    if (!loading && selectedConversation) setTimeout(() => hearBeat(), 3000)
-
 
100
  }, [loading, selectedConversation])
-
 
101
 
-
 
102
  useEffect(() => {
-
 
103
    setPages(DEFAULT_PAGES)
91
  }, [loading, selectedConversation])
104
  }, [selectedConversation])
92
 
105
 
Línea 93... Línea 106...
93
  useEffect(() => {
106
  useEffect(() => {
94
    if (selectedConversation) getMessages(selectedConversation?.messages_link)
107
    if (selectedConversation) getMessages(selectedConversation?.messages_link, pages.current)
95
  }, [pages.current])
108
  }, [pages.current])
Línea 109... Línea 122...
109
    return <EmptySection message={LABELS.SELECT_CONVERSATION} Icon={<QuestionAnswerRoundedIcon/>} />
122
    return <EmptySection message={LABELS.SELECT_CONVERSATION} Icon={<QuestionAnswerRoundedIcon/>} />
110
  }
123
  }
Línea 111... Línea 124...
111
 
124
 
112
  return (
125
  return (
113
    <div className='chat'>
126
    <div className='chat'>
114
      <span className='icon-hide' onClick={() => changeConversation(null)}>
127
      <span className='icon-hide' onClick={() => setConversation(null)}>
115
        <ArrowLeft />
128
        <ArrowLeft />
116
        {LABELS.RETURN}
129
        {LABELS.RETURN}
117
      </span>
130
      </span>
118
      <a href={selectedConversation.profile}>
131
      <a href={selectedConversation.profile}>
Línea 126... Línea 139...
126
              message={element}
139
              message={element}
127
              date={element.date}
140
              date={element.date}
128
            />)
141
            />)
129
          : <EmptySection message={LABELS.NO_MESSAGE_CONVERSATION} Icon={<SpeakerNotesOffRoundedIcon/>} />
142
          : <EmptySection message={LABELS.NO_MESSAGE_CONVERSATION} Icon={<SpeakerNotesOffRoundedIcon/>} />
130
        }
143
        }
131
        {loading && <Spinner />}
-
 
132
        {pages.current < pages.last && <hr ref={lastMessage} style={{ visibility: 'hidden' }} />}
144
        {pages.current < pages.last && <hr ref={lastMessage} style={{ visibility: 'hidden' }} />}
133
      </div>
145
      </div>
134
      <MessageBox onSend={handleSend} sendUrl={selectedConversation.send_link}/>
146
      <MessageBox onSend={handleSend} sendUrl={selectedConversation.send_link}/>
135
    </div>
147
    </div>
136
  )
148
  )