Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 778 | Rev 780 | 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
    const reverseMessages = [...messages]
6
 
1 www 7
    const handleScroll = (event) => {
8
        const node = event.target;
763 stevensc 9
        if (node.clientHeight >= (node.scrollHeight * .62)) {
1 www 10
            getMoreMessages()
763 stevensc 11
        }
1 www 12
    }
13
    const paneDidMount = (node) => {
747 stevensc 14
        if (node) {
15
            node.addEventListener("scroll", handleScroll.bind(this));
1 www 16
        }
17
    }
747 stevensc 18
    return (
1 www 19
        <React.Fragment>
20
            <div className="main-conversation-box">
21
                {
22
                    !selectedConversation
747 stevensc 23
                        ?
24
                        <div className="message-bar-head">
25
                            <div className="usr-mg-info">
26
                                <h3>No hay mensajes</h3>
1 www 27
                            </div>
747 stevensc 28
                        </div>
29
                        :
1 www 30
                        <React.Fragment>
31
                            <div
32
                                className="message-bar-head"
33
                                style={{
34
                                    minHeight: '13vh'
35
                                }}
36
                            >
37
                                <div className="usr-msg-details">
38
                                    <div className="usr-ms-img">
778 stevensc 39
                                        <img src={selectedConversation.image} alt={`${selectedConversation.name} avatars`} />
1 www 40
                                    </div>
41
                                    <div className="usr-mg-info">
42
                                        <h3>{selectedConversation.name}</h3>
43
                                        <p>Online</p>
44
                                    </div>
45
                                </div>
46
                                <div className="ed-opts">
47
                                    <a href="#" title="" className="ed-opts-open"><i className="la la-ellipsis-v"></i></a>
48
                                    <ul className="ed-options">
49
                                        <li><a href="#" className="btn-clean-messages" title="">Limpiar </a></li>
50
                                        <li><a href="#" className="btn-delete-conversation" title="">Borrar</a></li>
51
                                        <li><a href="#" className="btn-block-user" title="">Bloquear</a></li>
52
                                    </ul>
53
                                </div>
54
                            </div>
55
                            <div
56
                                className="messages-line overflow-auto"
57
                                style={{
58
                                    display: 'flex',
777 stevensc 59
                                    flexDirection: 'column-reverse',
1 www 60
                                    backgroundColor: 'white'
61
                                }}
62
                                ref={paneDidMount}
63
                            >
64
                                {
750 stevensc 65
                                    (messages)
66
                                    &&
67
                                    (
777 stevensc 68
                                        reverseMessages.map((element, i) => {
1 www 69
                                            const isLeft = element.side === 'left'
747 stevensc 70
                                            return (
1 www 71
                                                <div
747 stevensc 72
                                                    className={"main-message-box " + (isLeft ? 'st3' : 'ta-right')}
1 www 73
                                                    key={element.message}
74
                                                >
779 stevensc 75
                                                    {
1 www 76
                                                        isLeft && (
77
                                                            <div className="messg-usr-img">
78
                                                                <img
79
                                                                    src={element.sender_image}
80
                                                                    onClick={() => window.location.href = element.sender_profile}
81
                                                                    className="cursor-pointer"
82
                                                                    alt={element.sender_name}
83
                                                                />
84
                                                            </div>
85
                                                        )
779 stevensc 86
                                                    }
755 stevensc 87
                                                    {/* <div
747 stevensc 88
                                                        className="message-dt"
1 www 89
                                                        style={
90
                                                            {
747 stevensc 91
                                                                padding: 0,
1 www 92
                                                                //  display: 'flex',
747 stevensc 93
                                                                justifyContent: isLeft ? 'flex-start' : 'flex-end',
94
                                                                width: '85%',
95
                                                                paddingLeft: isLeft ? '13%' : '40%',
96
                                                                paddingRight: isLeft ? '40%' : 0
97
                                                            }
98
                                                        }
755 stevensc 99
                                                    > */}
100
                                                    <div
101
                                                        className="message-dt"
1 www 102
                                                    >
103
                                                        <div
104
                                                            className="message-inner-dt"
747 stevensc 105
 
1 www 106
                                                        >
107
                                                            <p className='w-100'>{element.message}</p>
108
                                                        </div>
109
                                                        <span>{element.date}</span>
110
                                                    </div>
755 stevensc 111
                                                    {/* {
747 stevensc 112
                                                        !isLeft && (
1 www 113
                                                            <div className="messg-usr-img">
114
                                                                <img
115
                                                                    src={element.sender_image}
116
                                                                    onClick={() => window.location.href = element.sender_profile}
117
                                                                    className="cursor-pointer"
118
                                                                    alt={element.sender_name}
119
                                                                />
120
                                                            </div>
121
                                                        )
755 stevensc 122
                                                    } */}
1 www 123
                                                </div>
124
                                            )
125
                                        })
126
                                    )
127
                                }
128
                            </div>
129
                            <div className="message-send-area">
130
                                <form id="form-send-message" name="form-send-message"
131
                                    onSubmit={e => {
132
                                        e.preventDefault()
133
                                        onSend(text)
134
                                        setText('')
135
                                    }}
136
                                >
137
                                    <div className="mf-field">
138
                                        <input
139
                                            type="text"
140
                                            name="message"
141
                                            id="message"
142
                                            value={text}
143
                                            placeholder={backendVars.labelWriteMessage}
144
                                            onChange={e => {
145
                                                setText(e.target.value || '')
146
                                            }}
147
                                        />
148
                                        <button type="submit">{backendVars.labelSend}</button>
149
                                    </div>
150
                                </form>
151
                            </div>
152
                        </React.Fragment>
153
                }
154
            </div>
155
        </React.Fragment>
156
    )
157
}