Rev 854 | Rev 866 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react'
export default ({ messages, selectedConversation, onSend, backendVars, getMoreMessages, handleShowConversation }) => {
const [text, setText] = useState('')
const handleScroll = (event) => {
const node = event.target;
console.log(node)
console.log(node.clientHeight)
/* if (node.scrollHeight >= (node.clientHeight * .62)) {
getMoreMessages()
} */
}
const paneDidMount = (node) => {
if (node) {
node.addEventListener("scroll", handleScroll.bind(this));
}
}
useEffect(() => {
paneDidMount.current?.scrollIntoView({ behavior: "smooth" });
}, [messages]);
return (
<React.Fragment>
<div className="main-conversation-box">
{
!selectedConversation
?
<div className="message-bar-head">
<div className="usr-mg-info">
<h3>No hay mensajes</h3>
</div>
</div>
:
<React.Fragment>
<div
className="message-bar-head"
>
<div className="usr-msg-details">
<i
className="fas fa-angle-left icon"
onClick={() => handleShowConversation(false)}
></i>
<div className="usr-ms-img">
<img src={selectedConversation.image} alt={`${selectedConversation.name} avatars`} />
</div>
<div className="usr-mg-info">
<h3>{selectedConversation.name}</h3>
<p>Online</p>
</div>
</div>
<div className="ed-opts">
<i className="la la-ellipsis-v icon"></i>
<ul className="ed-options">
<li><a href="#" className="btn-clean-messages" title="">Limpiar </a></li>
<li><a href="#" className="btn-delete-conversation" title="">Borrar</a></li>
<li><a href="#" className="btn-block-user" title="">Bloquear</a></li>
</ul>
</div>
</div>
<div
className="messages-line"
ref={paneDidMount}
>
{
(messages)
&&
(
[...messages].reverse().map((element, i) => {
const isLeft = element.side === 'left'
return (
<div
className={`main-message-box ${isLeft ? 'st3' : 'ta-right'}`}
key={element.message}
>
<div className="messg-usr-img">
<img
src={element.sender_image}
onClick={() => window.location.href = element.sender_profile}
className="cursor-pointer"
alt={element.sender_name}
/>
</div>
<div
className="message-dt"
>
<div
className="message-inner-dt"
>
<p className='w-100'>{element.message}</p>
</div>
<span>{element.date}</span>
</div>
</div>
)
})
)
}
</div>
<div className="message-send-area">
<form id="form-send-message" name="form-send-message"
onSubmit={e => {
e.preventDefault()
onSend(text)
setText('')
}}
>
<div className="mf-field">
<input
type="text"
name="message"
id="message"
value={text}
placeholder={backendVars.labelWriteMessage}
onChange={e => {
setText(e.target.value || '')
}}
/>
<button type="submit">
<i class="fas fa-paper-plane"></i>
{backendVars.labelSend}
</button>
</div>
</form>
</div>
</React.Fragment>
}
</div>
</React.Fragment>
)
}