Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
865 stevensc 1
import React, { useEffect, useRef, useState } from 'react'
1 www 2
 
835 stevensc 3
export default ({ messages, selectedConversation, onSend, backendVars, getMoreMessages, handleShowConversation }) => {
4
 
836 stevensc 5
    const [text, setText] = useState('')
871 stevensc 6
    const lastMessage = useRef(null);
765 stevensc 7
 
879 stevensc 8
    const handleInterception = () => {
9
        getMoreMessages()
880 stevensc 10
        console.log('Getting messages')
879 stevensc 11
    }
853 stevensc 12
 
13
    useEffect(() => {
879 stevensc 14
        if (lastMessage.current) {
15
            const observer = new IntersectionObserver(handleInterception, {
878 stevensc 16
                rootMargin: '0px'
876 stevensc 17
            })
853 stevensc 18
 
876 stevensc 19
            observer.observe(lastMessage.current)
20
        }
21
    }, [messages]);
22
 
747 stevensc 23
    return (
1 www 24
        <React.Fragment>
25
            <div className="main-conversation-box">
26
                {
27
                    !selectedConversation
747 stevensc 28
                        ?
811 stevensc 29
                        <div className="message-bar-head">
30
                            <div className="usr-mg-info">
31
                                <h3>No hay mensajes</h3>
32
                            </div>
33
                        </div>
747 stevensc 34
                        :
1 www 35
                        <React.Fragment>
36
                            <div
37
                                className="message-bar-head"
38
                            >
39
                                <div className="usr-msg-details">
836 stevensc 40
                                    <i
41
                                        className="fas fa-angle-left icon"
845 stevensc 42
                                        onClick={() => handleShowConversation(false)}
835 stevensc 43
                                    ></i>
1 www 44
                                    <div className="usr-ms-img">
778 stevensc 45
                                        <img src={selectedConversation.image} alt={`${selectedConversation.name} avatars`} />
1 www 46
                                    </div>
47
                                    <div className="usr-mg-info">
48
                                        <h3>{selectedConversation.name}</h3>
49
                                        <p>Online</p>
50
                                    </div>
51
                                </div>
52
                                <div className="ed-opts">
828 stevensc 53
                                    <i className="la la-ellipsis-v icon"></i>
1 www 54
                                    <ul className="ed-options">
55
                                        <li><a href="#" className="btn-clean-messages" title="">Limpiar </a></li>
56
                                        <li><a href="#" className="btn-delete-conversation" title="">Borrar</a></li>
57
                                        <li><a href="#" className="btn-block-user" title="">Bloquear</a></li>
58
                                    </ul>
59
                                </div>
60
                            </div>
61
                            <div
835 stevensc 62
                                className="messages-line"
1 www 63
                            >
64
                                {
750 stevensc 65
                                    (messages)
66
                                    &&
67
                                    (
879 stevensc 68
                                        messages.map((element, i) => {
1 www 69
                                            const isLeft = element.side === 'left'
747 stevensc 70
                                            return (
875 stevensc 71
                                                i === (messages.length - 1)
873 stevensc 72
                                                    ?
73
                                                    <div
875 stevensc 74
                                                        className={`main-message-box ${!isLeft ? 'ta-right' : ''}`}
873 stevensc 75
                                                        key={element.message}
76
                                                        ref={lastMessage}
77
                                                    >
78
                                                        <div className="messg-usr-img">
79
                                                            <img
80
                                                                src={element.sender_image}
81
                                                                onClick={() => window.location.href = element.sender_profile}
82
                                                                className="cursor-pointer"
83
                                                                alt={element.sender_name}
84
                                                            />
85
                                                        </div>
86
                                                        <div
87
                                                            className="message-dt"
88
                                                        >
89
                                                            <div
90
                                                                className="message-inner-dt"
91
 
92
                                                            >
93
                                                                <p className='w-100'>{element.message}</p>
94
                                                            </div>
95
                                                            <span>{element.date}</span>
96
                                                        </div>
780 stevensc 97
                                                    </div>
873 stevensc 98
                                                    :
755 stevensc 99
                                                    <div
875 stevensc 100
                                                        className={`main-message-box ${!isLeft ? 'ta-right' : ''}`}
873 stevensc 101
                                                        key={element.message}
1 www 102
                                                    >
873 stevensc 103
                                                        <div className="messg-usr-img">
104
                                                            <img
105
                                                                src={element.sender_image}
106
                                                                onClick={() => window.location.href = element.sender_profile}
107
                                                                className="cursor-pointer"
108
                                                                alt={element.sender_name}
109
                                                            />
110
                                                        </div>
1 www 111
                                                        <div
873 stevensc 112
                                                            className="message-dt"
113
                                                        >
114
                                                            <div
115
                                                                className="message-inner-dt"
747 stevensc 116
 
873 stevensc 117
                                                            >
118
                                                                <p className='w-100'>{element.message}</p>
119
                                                            </div>
120
                                                            <span>{element.date}</span>
1 www 121
                                                        </div>
122
                                                    </div>
123
                                            )
124
                                        })
125
                                    )
126
                                }
127
                            </div>
128
                            <div className="message-send-area">
129
                                <form id="form-send-message" name="form-send-message"
130
                                    onSubmit={e => {
131
                                        e.preventDefault()
132
                                        onSend(text)
133
                                        setText('')
134
                                    }}
135
                                >
136
                                    <div className="mf-field">
137
                                        <input
138
                                            type="text"
139
                                            name="message"
140
                                            id="message"
141
                                            value={text}
142
                                            placeholder={backendVars.labelWriteMessage}
143
                                            onChange={e => {
144
                                                setText(e.target.value || '')
145
                                            }}
146
                                        />
808 stevensc 147
                                        <button type="submit">
809 stevensc 148
                                            <i class="fas fa-paper-plane"></i>
808 stevensc 149
                                            {backendVars.labelSend}
150
                                        </button>
1 www 151
                                    </div>
152
                                </form>
153
                            </div>
154
                        </React.Fragment>
155
                }
156
            </div>
157
        </React.Fragment>
158
    )
159
}