Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4375 | Rev 5185 | 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 */
2981 stevensc 2
import React, { useEffect, useRef } from 'react';
4374 stevensc 3
import EmptySection from '../../shared/empty-section/EmptySection';
1748 stevensc 4
import MessageBox from './MessageBox';
5
import MessageTemplate from './MessageTemplate';
1 www 6
 
3074 stevensc 7
const Chatmail = ({
4346 stevensc 8
    selectedConversation = null,
4374 stevensc 9
    messages = [],
10
    backendVars = {},
11
    setConversation = () => { },
12
    getMoreMessages = () => { },
13
    onSend = () => { },
14
    setMsgs = () => { },
1741 stevensc 15
}) => {
835 stevensc 16
 
1750 stevensc 17
    const lastMessage = useRef(null);
765 stevensc 18
 
853 stevensc 19
    useEffect(() => {
917 stevensc 20
        const observer = new IntersectionObserver(([entry]) => {
21
            if (entry.isIntersecting) {
22
                getMoreMessages()
23
            }
24
        })
25
 
879 stevensc 26
        if (lastMessage.current) {
915 stevensc 27
            observer.observe(lastMessage.current)
876 stevensc 28
        }
1752 stevensc 29
    }, [messages]);
876 stevensc 30
 
4375 stevensc 31
    if (!selectedConversation) {
4374 stevensc 32
        return (
33
            <EmptySection
34
                Icon={<i className='fas fa-comments icon' />}
35
                message='No hay mensajes'
36
            />
37
        )
4347 stevensc 38
    }
39
 
747 stevensc 40
    return (
4346 stevensc 41
        <div className='chat'>
4374 stevensc 42
            <div className='icon-hide' onClick={() => setConversation(null)}>
4373 stevensc 43
                <i className="fas fa-angle-left" />
44
                <span>
4346 stevensc 45
                    Volver
46
                </span>
2747 stevensc 47
            </div>
4346 stevensc 48
            <a href={selectedConversation.profile}>
49
                <h2 className='chat-header'>
50
                    {selectedConversation.name}
51
                </h2>
52
            </a>
4376 stevensc 53
            <div className="messages-line">
54
                {messages.length
55
                    ? messages.map((element, index) => {
56
                        return (
57
                            <MessageTemplate
58
                                key={index}
59
                                message={element}
60
                                date={element.date}
61
                            />
62
                        )
63
                    })
64
                    :
65
                    <div className='message-select-conversation'>
66
                        <div className='msgs-select-container'>
67
                            <i className='fas fa-inbox icon' />
68
                            <h3>No hay mensajes en esta conversación</h3>
4346 stevensc 69
                        </div>
4376 stevensc 70
                    </div>
71
                }
72
                <hr ref={lastMessage} style={{ visibility: 'hidden' }} />
73
            </div>
4346 stevensc 74
            <MessageBox
75
                setMsgs={setMsgs}
76
                onSend={onSend}
77
                backendVars={backendVars}
78
                sendLink={selectedConversation.send_link}
79
            />
80
        </div >
1 www 81
    )
3074 stevensc 82
}
83
 
84
export default Chatmail