Rev 1128 | Rev 1237 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useRef, useState } from 'react'export default ({ messages, selectedConversation, onSend, backendVars, getMoreMessages, handleShowConversation }) => {const [text, setText] = useState('')const [showOptions, setShowOptions] = useState(false)const lastMessage = useRef(null);const messagesLine = useRef(null);useEffect(() => {const observer = new IntersectionObserver(([entry]) => {if (entry.isIntersecting) {getMoreMessages()}}, {rootMargin: '0px'})if (lastMessage.current) {observer.observe(lastMessage.current)}}, [messages]);return (<React.Fragment><div className="main-conversation-box">{!selectedConversation?<div className='message-select-conversation'><div className='msgs-select-container'><i className='fas fa-inbox icon' /><h3>Selecciona una conversación</h3></div></div>:<React.Fragment><divclassName="message-bar-head"><div className="usr-msg-details"><iclassName="fas fa-angle-left icon msgs-hide"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" onClick={()=> setShowOptions(!showOptions)}><i className="la la-ellipsis-v icon"></i><ul className={showOptions ? "ed-options active" : "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><divclassName="messages-line"ref={messagesLine}>{(messages)&&(messages.map((element, i) => {const isLeft = element.side === 'left'return (<divclassName={`main-message-box ${!isLeft ? 'ta-right' : ''}`}key={element.message}><div className="messg-usr-img"><imgsrc={element.sender_image}onClick={() => window.location.href = element.sender_profile}className="cursor-pointer"alt={element.sender_name}/></div><divclassName="message-dt"><divclassName="message-inner-dt"><p className='w-100'>{element.message}</p></div><span>{element.date}</span></div></div>)}))}<hr ref={lastMessage} /></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"><inputtype="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>)}