Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
1 www 1
import React from 'react'
2
 
747 stevensc 3
export default ({ messages, selectedConversation, onSend, backendVars, getMoreMessages }) => {
1 www 4
    const [text, setText] = React.useState('')
765 stevensc 5
 
1 www 6
    const handleScroll = (event) => {
7
        const node = event.target;
763 stevensc 8
        if (node.clientHeight >= (node.scrollHeight * .62)) {
1 www 9
            getMoreMessages()
763 stevensc 10
        }
1 www 11
    }
12
    const paneDidMount = (node) => {
747 stevensc 13
        if (node) {
14
            node.addEventListener("scroll", handleScroll.bind(this));
1 www 15
        }
16
    }
747 stevensc 17
    return (
1 www 18
        <React.Fragment>
19
            <div className="main-conversation-box">
20
                {
21
                    !selectedConversation
747 stevensc 22
                        ?
810 stevensc 23
                        <h3>No hay mensajes</h3>
747 stevensc 24
                        :
1 www 25
                        <React.Fragment>
26
                            <div
27
                                className="message-bar-head"
28
                            >
29
                                <div className="usr-msg-details">
30
                                    <div className="usr-ms-img">
778 stevensc 31
                                        <img src={selectedConversation.image} alt={`${selectedConversation.name} avatars`} />
1 www 32
                                    </div>
33
                                    <div className="usr-mg-info">
34
                                        <h3>{selectedConversation.name}</h3>
35
                                        <p>Online</p>
36
                                    </div>
37
                                </div>
38
                                <div className="ed-opts">
39
                                    <a href="#" title="" className="ed-opts-open"><i className="la la-ellipsis-v"></i></a>
40
                                    <ul className="ed-options">
41
                                        <li><a href="#" className="btn-clean-messages" title="">Limpiar </a></li>
42
                                        <li><a href="#" className="btn-delete-conversation" title="">Borrar</a></li>
43
                                        <li><a href="#" className="btn-block-user" title="">Bloquear</a></li>
44
                                    </ul>
45
                                </div>
46
                            </div>
47
                            <div
48
                                className="messages-line overflow-auto"
49
                                style={{
50
                                    display: 'flex',
777 stevensc 51
                                    flexDirection: 'column-reverse',
1 www 52
                                    backgroundColor: 'white'
53
                                }}
54
                                ref={paneDidMount}
55
                            >
56
                                {
750 stevensc 57
                                    (messages)
58
                                    &&
59
                                    (
781 stevensc 60
                                        messages.map((element, i) => {
1 www 61
                                            const isLeft = element.side === 'left'
747 stevensc 62
                                            return (
1 www 63
                                                <div
783 stevensc 64
                                                    className={`main-message-box ${isLeft ? 'st3' : 'ta-right'}`}
1 www 65
                                                    key={element.message}
66
                                                >
783 stevensc 67
                                                    <div className="messg-usr-img">
780 stevensc 68
                                                        <img
69
                                                            src={element.sender_image}
70
                                                            onClick={() => window.location.href = element.sender_profile}
71
                                                            className="cursor-pointer"
72
                                                            alt={element.sender_name}
73
                                                        />
74
                                                    </div>
755 stevensc 75
                                                    <div
76
                                                        className="message-dt"
1 www 77
                                                    >
78
                                                        <div
79
                                                            className="message-inner-dt"
747 stevensc 80
 
1 www 81
                                                        >
82
                                                            <p className='w-100'>{element.message}</p>
83
                                                        </div>
84
                                                        <span>{element.date}</span>
85
                                                    </div>
86
                                                </div>
87
                                            )
88
                                        })
89
                                    )
90
                                }
91
                            </div>
92
                            <div className="message-send-area">
93
                                <form id="form-send-message" name="form-send-message"
94
                                    onSubmit={e => {
95
                                        e.preventDefault()
96
                                        onSend(text)
97
                                        setText('')
98
                                    }}
99
                                >
100
                                    <div className="mf-field">
101
                                        <input
102
                                            type="text"
103
                                            name="message"
104
                                            id="message"
105
                                            value={text}
106
                                            placeholder={backendVars.labelWriteMessage}
107
                                            onChange={e => {
108
                                                setText(e.target.value || '')
109
                                            }}
110
                                        />
808 stevensc 111
                                        <button type="submit">
809 stevensc 112
                                            <i class="fas fa-paper-plane"></i>
808 stevensc 113
                                            {backendVars.labelSend}
114
                                        </button>
1 www 115
                                    </div>
116
                                </form>
117
                            </div>
118
                        </React.Fragment>
119
                }
120
            </div>
121
        </React.Fragment>
122
    )
123
}