Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
836 stevensc 1
import React, { 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('')
765 stevensc 6
 
1 www 7
    const handleScroll = (event) => {
8
        const node = event.target;
851 stevensc 9
        console.log(node.scrollHeight)
10
        console.log(node.clientHeight)
850 stevensc 11
        if (node.scrollHeight >= (node.clientHeight * .62)) {
1 www 12
            getMoreMessages()
763 stevensc 13
        }
1 www 14
    }
15
    const paneDidMount = (node) => {
747 stevensc 16
        if (node) {
17
            node.addEventListener("scroll", handleScroll.bind(this));
1 www 18
        }
19
    }
853 stevensc 20
 
21
    useEffect(() => {
22
        paneDidMount.current?.scrollIntoView({ behavior: "smooth" });
23
      }, [messages]);
24
 
747 stevensc 25
    return (
1 www 26
        <React.Fragment>
27
            <div className="main-conversation-box">
28
                {
29
                    !selectedConversation
747 stevensc 30
                        ?
811 stevensc 31
                        <div className="message-bar-head">
32
                            <div className="usr-mg-info">
33
                                <h3>No hay mensajes</h3>
34
                            </div>
35
                        </div>
747 stevensc 36
                        :
1 www 37
                        <React.Fragment>
38
                            <div
39
                                className="message-bar-head"
40
                            >
41
                                <div className="usr-msg-details">
836 stevensc 42
                                    <i
43
                                        className="fas fa-angle-left icon"
845 stevensc 44
                                        onClick={() => handleShowConversation(false)}
835 stevensc 45
                                    ></i>
1 www 46
                                    <div className="usr-ms-img">
778 stevensc 47
                                        <img src={selectedConversation.image} alt={`${selectedConversation.name} avatars`} />
1 www 48
                                    </div>
49
                                    <div className="usr-mg-info">
50
                                        <h3>{selectedConversation.name}</h3>
51
                                        <p>Online</p>
52
                                    </div>
53
                                </div>
54
                                <div className="ed-opts">
828 stevensc 55
                                    <i className="la la-ellipsis-v icon"></i>
1 www 56
                                    <ul className="ed-options">
57
                                        <li><a href="#" className="btn-clean-messages" title="">Limpiar </a></li>
58
                                        <li><a href="#" className="btn-delete-conversation" title="">Borrar</a></li>
59
                                        <li><a href="#" className="btn-block-user" title="">Bloquear</a></li>
60
                                    </ul>
61
                                </div>
62
                            </div>
63
                            <div
835 stevensc 64
                                className="messages-line"
1 www 65
                                ref={paneDidMount}
66
                            >
67
                                {
750 stevensc 68
                                    (messages)
69
                                    &&
70
                                    (
853 stevensc 71
                                        [...messages].reverse().map((element, i) => {
1 www 72
                                            const isLeft = element.side === 'left'
747 stevensc 73
                                            return (
1 www 74
                                                <div
783 stevensc 75
                                                    className={`main-message-box ${isLeft ? 'st3' : 'ta-right'}`}
1 www 76
                                                    key={element.message}
77
                                                >
783 stevensc 78
                                                    <div className="messg-usr-img">
780 stevensc 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>
755 stevensc 86
                                                    <div
87
                                                        className="message-dt"
1 www 88
                                                    >
89
                                                        <div
90
                                                            className="message-inner-dt"
747 stevensc 91
 
1 www 92
                                                        >
93
                                                            <p className='w-100'>{element.message}</p>
94
                                                        </div>
95
                                                        <span>{element.date}</span>
96
                                                    </div>
97
                                                </div>
98
                                            )
99
                                        })
100
                                    )
101
                                }
102
                            </div>
103
                            <div className="message-send-area">
104
                                <form id="form-send-message" name="form-send-message"
105
                                    onSubmit={e => {
106
                                        e.preventDefault()
107
                                        onSend(text)
108
                                        setText('')
109
                                    }}
110
                                >
111
                                    <div className="mf-field">
112
                                        <input
113
                                            type="text"
114
                                            name="message"
115
                                            id="message"
116
                                            value={text}
117
                                            placeholder={backendVars.labelWriteMessage}
118
                                            onChange={e => {
119
                                                setText(e.target.value || '')
120
                                            }}
121
                                        />
808 stevensc 122
                                        <button type="submit">
809 stevensc 123
                                            <i class="fas fa-paper-plane"></i>
808 stevensc 124
                                            {backendVars.labelSend}
125
                                        </button>
1 www 126
                                    </div>
127
                                </form>
128
                            </div>
129
                        </React.Fragment>
130
                }
131
            </div>
132
        </React.Fragment>
133
    )
134
}