Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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