Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
1752 stevensc 1
import React, { useEffect, useRef, useState } from 'react';
1748 stevensc 2
import MessageBarHead from './MessageBarHead';
3
import MessageBox from './MessageBox';
4
import MessageTemplate from './MessageTemplate';
1 www 5
 
1748 stevensc 6
function areEqual(prevProps, nextProps) {
1749 stevensc 7
    return prevProps.messages.length === nextProps.messages.length
1748 stevensc 8
}
9
 
1752 stevensc 10
export default ({
1748 stevensc 11
    messages,
12
    selectedConversation,
13
    onSend,
14
    backendVars,
15
    getMoreMessages,
1741 stevensc 16
    handleShowConversation,
17
    loading
18
}) => {
835 stevensc 19
 
1750 stevensc 20
    const lastMessage = useRef(null);
765 stevensc 21
 
853 stevensc 22
    useEffect(() => {
917 stevensc 23
        const observer = new IntersectionObserver(([entry]) => {
24
            if (entry.isIntersecting) {
25
                getMoreMessages()
26
            }
1752 stevensc 27
        }, {
28
            rootMargin: '0px'
917 stevensc 29
        })
30
 
879 stevensc 31
        if (lastMessage.current) {
915 stevensc 32
            observer.observe(lastMessage.current)
876 stevensc 33
        }
1752 stevensc 34
    }, [messages]);
876 stevensc 35
 
747 stevensc 36
    return (
1884 steven 37
        <div className="main-conversation-box border-gray border-radius">
38
            {
39
                !selectedConversation
40
                    ?
41
                    <div className='message-select-conversation'>
42
                        <div className='msgs-select-container'>
43
                            <i className='fas fa-messages icon text-gray' />
44
                            <h3>
45
                                No hay mensajes
46
                            </h3>
811 stevensc 47
                        </div>
1884 steven 48
                    </div>
49
                    :
50
                    <>
51
                        <MessageBarHead
52
                            selectedConversation={selectedConversation}
53
                            handleShowConversation={handleShowConversation}
54
                        />
55
                        <div className="messages-line">
56
                            {
57
                                messages.length
58
                                    ?
59
                                    messages.map((element, i) =>
60
                                        <MessageTemplate
61
                                            key={i}
62
                                            message={element}
63
                                        />
64
                                    )
65
                                    :
66
                                    <div className='message-select-conversation'>
67
                                        <div className='msgs-select-container'>
68
                                            <i className='fas fa-inbox icon' />
69
                                            <h3>No hay mensajes en esta conversación</h3>
1748 stevensc 70
                                        </div>
1884 steven 71
                                    </div>
72
                            }
73
                            <hr ref={lastMessage} />
74
                        </div>
75
                        <MessageBox
76
                            onSend={onSend}
77
                            backendVars={backendVars}
78
                        />
79
                    </>
1748 stevensc 80
            }
1884 steven 81
        </div>
1 www 82
    )
1752 stevensc 83
}