Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
1191 stevensc 1
import React, { useState } from "react";
1 www 2
import parse from "html-react-parser";
3
import styled from "styled-components";
1191 stevensc 4
import LikeButton from "../like-button/LikeButton";
1 www 5
 
6
const StyledChatImgMessage = styled.div`
7
  display: flex;
8
  justify-content: center;
9
  align-items: center;
10
  position: initial !important;
11
  transform: initial !important;
12
  .chat_image_container {
13
    video {
14
      width: 150px;
15
      outline: none;
16
    }
17
    img {
18
      width: 150px;
19
      max-height: 200px;
20
    }
21
    .pdf {
22
      width: 40px;
23
    }
24
  }
25
  .chat_image__download_button {
26
    margin-left: 0.5rem;
27
    .fa {
28
      font-size: 1.5rem;
29
      color: black;
30
    }
31
  }
32
`;
33
 
1298 stevensc 34
const MessageTemplate = ({ message, setResponseMessage, responseMessage }) => {
1191 stevensc 35
 
36
  const [isShow, setIsShow] = useState(false);
1198 stevensc 37
  const [isLiked, setIsLiked] = useState(false);
38
 
1 www 39
  const senderName = (message) => {
40
    if (message.type === "group") {
41
      return message.u === 1 ? "" : message.user_name;
42
    }
43
  };
1191 stevensc 44
 
1198 stevensc 45
  const handleLike = () => {
46
    setIsLiked(!isLiked)
1199 stevensc 47
    setIsShow(!isShow)
1198 stevensc 48
  }
49
 
1 www 50
  switch (message.mtype) {
51
    case "text":
52
      return (
53
        <li
54
          key={message.id}
1189 stevensc 55
          className={`clearfix ${message.u === 1 ? "odd" : ""
56
            } m-t-10 conversers${message.u}`}
1 www 57
        >
58
          <div
59
            className="conversation-text"
60
            data-toggle="tooltip"
61
            data-placement="left"
62
            data-html="true"
63
          >
64
            <div className="ctext-wrap">
65
              {senderName(message)}
66
              <p className="">
67
                {parse(emojione.shortnameToImage(message.m))}
68
                <br />
69
                <i className="text-right">{message.time}</i>
70
              </p>
1198 stevensc 71
              {
72
                isLiked
73
                &&
74
                <i
75
                  className="fas fa-heart"
1200 stevensc 76
                  style={{
77
                    color: '#0961bf',
78
                    position: 'absolute',
79
                    top: '87%',
80
                    left: '85%'
81
                  }}
1198 stevensc 82
                />
83
              }
1 www 84
            </div>
1191 stevensc 85
            <i
86
              className="la la-ellipsis-v icon"
87
              style={{ position: 'relative' }}
88
              onClick={() => setIsShow(!isShow)}
89
            >
90
            </i>
1197 stevensc 91
            {
92
              isShow
93
              &&
94
              <div
95
                className="display-reactions"
96
              >
1198 stevensc 97
                <LikeButton
98
                  onClick={handleLike}
99
                />
1298 stevensc 100
                <button
101
                  type="button"
102
                  onClick={() => setResponseMessage(message)}
103
                >
104
                  <i className="fa fa-reply"></i>
105
                </button>
1197 stevensc 106
              </div>
107
            }
1 www 108
          </div>
109
        </li>
110
      );
111
    case "image":
112
      return (
113
        <li
114
          key={message.id}
1189 stevensc 115
          className={`clearfix ${message.u === 1 ? "odd" : ""
116
            } m-t-10 conversers${message.u}`}
1 www 117
        >
118
          <div
119
            className="conversation-text"
120
            data-toggle="tooltip"
121
            data-placement="left"
122
            data-html="true"
123
          >
124
            <div className="ctext-wrap">
125
              {senderName(message)}
126
              <StyledChatImgMessage>
127
                <div className="chat_image_container">
128
                  <img src={message.m} alt="chat_image" />
129
                </div>
130
                {message.u === 1 ? (
131
                  ""
132
                ) : (
133
                  <a
134
                    href={message.m}
135
                    target="_blank"
136
                    className="chat_image__download_button"
137
                  >
138
                    <i className="fa ti-arrow-circle-down"></i>
139
                  </a>
140
                )}
141
              </StyledChatImgMessage>
142
              <br />
143
              <i className="text-right">{message.time}</i>
144
            </div>
145
          </div>
146
        </li>
147
      );
148
    case "video":
149
      return (
150
        <li
151
          key={message.id}
1189 stevensc 152
          className={`clearfix ${message.u === 1 ? "odd" : ""
153
            } m-t-10 conversers${message.u}`}
1 www 154
        >
155
          <div
156
            className="conversation-text"
157
            data-toggle="tooltip"
158
            data-placement="left"
159
            data-html="true"
160
          >
161
            <div className="ctext-wrap">
162
              {senderName(message)}
163
              <StyledChatImgMessage>
164
                <div className="chat_image_container">
165
                  <video src={message.m} preload="none" controls></video>
166
                </div>
167
                {message.u === 1 ? (
168
                  ""
169
                ) : (
170
                  <a
171
                    href={message.m}
172
                    target="_blank"
173
                    className="chat_image__download_button"
174
                  >
175
                    <i className="fa ti-arrow-circle-down"></i>
176
                  </a>
177
                )}
178
              </StyledChatImgMessage>
179
              <br />
180
              <i className="text-right">{message.time}</i>
181
            </div>
182
          </div>
183
        </li>
184
      );
185
    case "document":
186
      return (
187
        <li
188
          key={message.id}
1189 stevensc 189
          className={`clearfix ${message.u === 1 ? "odd" : ""
190
            } m-t-10 conversers${message.u}`}
1 www 191
        >
192
          <div
193
            className="conversation-text"
194
            data-toggle="tooltip"
195
            data-placement="left"
196
            data-html="true"
197
          >
198
            <div className="ctext-wrap">
199
              {senderName(message)}
200
              <StyledChatImgMessage>
201
                <div className="chat_image_container">
202
                  <img
203
                    className="pdf"
204
                    src="/storage/type/default/filename/pdf.png"
205
                    alt="pdf"
206
                  />
207
                </div>
208
                {message.u === 1 ? (
209
                  ""
210
                ) : (
211
                  <a
212
                    href={message.m}
213
                    target="_blank"
214
                    className="chat_image__download_button"
215
                  >
216
                    <i className="fa ti-arrow-circle-down"></i>
217
                  </a>
218
                )}
219
              </StyledChatImgMessage>
220
              <br />
221
              <i className="text-right">{message.time}</i>
222
            </div>
223
          </div>
224
        </li>
225
      );
226
    default:
227
      return (
228
        <li
229
          key={message.id}
1189 stevensc 230
          className={`clearfix ${message.u === 1 ? "odd" : ""
231
            } m-t-10 conversers${message.u}`}
1 www 232
        >
233
          <div
234
            className="conversation-text"
235
            data-toggle="tooltip"
236
            data-placement="left"
237
            data-html="true"
238
          >
239
            <div className="ctext-wrap">
240
              {senderName(message)}
241
              <p className="">
242
                {message.mtype}
243
                <br />
244
                <i className="text-right">{message.time}</i>
245
              </p>
246
            </div>
247
          </div>
248
        </li>
249
      );
250
  }
251
};
252
 
253
export default MessageTemplate;