Rev 3136 | Rev 4347 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
/* eslint-disable react/prop-types */
import React, { useEffect, useRef } from 'react';
import MessageBox from './MessageBox';
import MessageTemplate from './MessageTemplate';
const Chatmail = ({
messages,
selectedConversation,
onSend,
backendVars,
getMoreMessages,
handleShowConversation,
setMsgs
}) => {
const lastMessage = useRef(null);
useEffect(() => {
const observer = new IntersectionObserver(([entry]) => {
if (entry.isIntersecting) {
getMoreMessages()
}
}, {
rootMargin: '0px'
})
if (lastMessage.current) {
observer.observe(lastMessage.current)
}
}, [messages]);
return (
!selectedConversation
?
<div className="main-conversation-box border-gray border-radius">
<div className='message-select-conversation'>
<div className='msgs-select-container'>
<i className='fas fa-comments icon text-gray' />
<h3>
No hay mensajes
</h3>
</div>
</div>
</div>
:
<div className='inmail-conversation-container'>
<div className='w-100 icon-hide'>
<span className='d-flex align-items-center mr-2 cursor-pointer' onClick={() => handleShowConversation(false)}>
<i className="fas fa-angle-left mr-2" />
Volver
</span>
</div>
<div className="inmail-conversation-box border-gray border-radius">
<div className="py-3 mb-2 chat-header">
<a href={selectedConversation.profile}>
<h2>
{selectedConversation.name}
</h2>
</a>
</div>
<div className="messages-line">
{
messages.length
?
messages.map((element, i) =>
<MessageTemplate
key={i}
message={element}
date={element.date}
/>
)
:
<div className='message-select-conversation'>
<div className='msgs-select-container'>
<i className='fas fa-inbox icon' />
<h3>No hay mensajes en esta conversación</h3>
</div>
</div>
}
<hr ref={lastMessage} style={{ visibility: 'hidden' }} />
</div>
</div>
<MessageBox
setMsgs={setMsgs}
onSend={onSend}
backendVars={backendVars}
sendLink={selectedConversation.send_link}
/>
</div>
)
}
export default Chatmail