Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
3710 stevensc 1
/* eslint-disable react/prop-types */
5185 stevensc 2
import React, { useEffect, useRef } from 'react'
3
import EmptySection from '../../shared/empty-section/EmptySection'
4
import MessageBox from './MessageBox'
5
import MessageTemplate from './MessageTemplate'
6
import SpeakerNotesOffRoundedIcon from '@mui/icons-material/SpeakerNotesOffRounded'
7
import QuestionAnswerRoundedIcon from '@mui/icons-material/QuestionAnswerRounded'
1 www 8
 
3074 stevensc 9
const Chatmail = ({
5185 stevensc 10
  selectedConversation = null,
11
  messages = [],
12
  setConversation = () => { },
13
  getMoreMessages = () => { },
5187 stevensc 14
  onSend = () => { }
1741 stevensc 15
}) => {
5185 stevensc 16
  const lastMessage = useRef(null)
835 stevensc 17
 
5185 stevensc 18
  useEffect(() => {
5197 stevensc 19
    const observer = new IntersectionObserver(([entry]) => {
20
      if (entry.isIntersecting) {
21
        getMoreMessages()
22
      }
23
    })
24
 
25
    if (lastMessage.current) {
26
      observer.observe(lastMessage.current)
5185 stevensc 27
    }
5197 stevensc 28
    return () => {
29
      observer.unobserve()
30
    }
31
  }, [messages])
917 stevensc 32
 
5185 stevensc 33
  if (!selectedConversation) {
5187 stevensc 34
    return <EmptySection message={LABELS.SELECT_CONVERSATION} Icon={<QuestionAnswerRoundedIcon/>} />
5185 stevensc 35
  }
36
 
37
  return (
38
    <div className='chat'>
39
      <div className='icon-hide' onClick={() => setConversation(null)}>
40
        <i className="fas fa-angle-left" />
41
        <span>{LABELS.RETURN}</span>
42
      </div>
43
      <a href={selectedConversation.profile}>
44
        <h2 className='chat-header'>{selectedConversation.name}</h2>
45
      </a>
46
      <div className="messages-line">
47
        {messages.length
48
          ? messages.map((element, index) =>
49
            <MessageTemplate
50
              key={index}
51
              message={element}
52
              date={element.date}
53
            />)
5187 stevensc 54
          : <EmptySection message={LABELS.NO_MESSAGE_CONVERSATION} Icon={<SpeakerNotesOffRoundedIcon/>} />
876 stevensc 55
        }
5185 stevensc 56
        <hr ref={lastMessage} style={{ visibility: 'hidden' }} />
57
      </div>
5187 stevensc 58
      <MessageBox onSend={onSend} sendUrl={selectedConversation.send_link}/>
5185 stevensc 59
    </div>
60
  )
3074 stevensc 61
}
62
 
5185 stevensc 63
export default Chatmail