Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 1877 | Rev 1884 | 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 (
1883 steven 37
        <>
38
            <div className="main-conversation-box border-gray border-radius">
39
                {
40
                    !selectedConversation
41
                        ?
42
                        <div className='message-select-conversation'>
43
                            <div className='msgs-select-container'>
44
                                <i className='fas fa-messages icon text-gray' />
45
                                <h3>
46
                                    No hay mensajes
47
                                </h3>
48
                            </div>
811 stevensc 49
                        </div>
1883 steven 50
                        :
51
                        <>
52
                            <MessageBarHead
53
                                selectedConversation={selectedConversation}
54
                                handleShowConversation={handleShowConversation}
55
                            />
56
                            <div className="messages-line">
57
                                {
58
                                    messages.length
59
                                        ?
60
                                        messages.map((element, i) =>
61
                                            <MessageTemplate
62
                                                key={i}
63
                                                message={element}
64
                                            />
65
                                        )
66
                                        :
67
                                        <div className='message-select-conversation'>
68
                                            <div className='msgs-select-container'>
69
                                                <i className='fas fa-inbox icon' />
70
                                                <h3>No hay mensajes en esta conversación</h3>
71
                                            </div>
1748 stevensc 72
                                        </div>
1883 steven 73
                                }
74
                                <hr ref={lastMessage} />
75
                            </div>
76
                        </>
77
                }
78
            </div>
79
            {
80
                !!selectedConversation && (
81
                    <MessageBox
82
                        onSend={onSend}
83
                        backendVars={backendVars}
84
                    />
85
                )
1748 stevensc 86
            }
1883 steven 87
        </>
1 www 88
    )
1752 stevensc 89
}