Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 1198 | Rev 1200 | 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
 
34
const MessageTemplate = ({ message }) => {
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"
76
                  style={{ color: 'red' }}
77
                />
78
              }
1 www 79
            </div>
1191 stevensc 80
            <i
81
              className="la la-ellipsis-v icon"
82
              style={{ position: 'relative' }}
83
              onClick={() => setIsShow(!isShow)}
84
            >
85
            </i>
1197 stevensc 86
            {
87
              isShow
88
              &&
89
              <div
90
                className="display-reactions"
91
              >
1198 stevensc 92
                <LikeButton
93
                  onClick={handleLike}
94
                />
1197 stevensc 95
              </div>
96
            }
1 www 97
          </div>
98
        </li>
99
      );
100
    case "image":
101
      return (
102
        <li
103
          key={message.id}
1189 stevensc 104
          className={`clearfix ${message.u === 1 ? "odd" : ""
105
            } m-t-10 conversers${message.u}`}
1 www 106
        >
107
          <div
108
            className="conversation-text"
109
            data-toggle="tooltip"
110
            data-placement="left"
111
            data-html="true"
112
          >
113
            <div className="ctext-wrap">
114
              {senderName(message)}
115
              <StyledChatImgMessage>
116
                <div className="chat_image_container">
117
                  <img src={message.m} alt="chat_image" />
118
                </div>
119
                {message.u === 1 ? (
120
                  ""
121
                ) : (
122
                  <a
123
                    href={message.m}
124
                    target="_blank"
125
                    className="chat_image__download_button"
126
                  >
127
                    <i className="fa ti-arrow-circle-down"></i>
128
                  </a>
129
                )}
130
              </StyledChatImgMessage>
131
              <br />
132
              <i className="text-right">{message.time}</i>
133
            </div>
134
          </div>
135
        </li>
136
      );
137
    case "video":
138
      return (
139
        <li
140
          key={message.id}
1189 stevensc 141
          className={`clearfix ${message.u === 1 ? "odd" : ""
142
            } m-t-10 conversers${message.u}`}
1 www 143
        >
144
          <div
145
            className="conversation-text"
146
            data-toggle="tooltip"
147
            data-placement="left"
148
            data-html="true"
149
          >
150
            <div className="ctext-wrap">
151
              {senderName(message)}
152
              <StyledChatImgMessage>
153
                <div className="chat_image_container">
154
                  <video src={message.m} preload="none" controls></video>
155
                </div>
156
                {message.u === 1 ? (
157
                  ""
158
                ) : (
159
                  <a
160
                    href={message.m}
161
                    target="_blank"
162
                    className="chat_image__download_button"
163
                  >
164
                    <i className="fa ti-arrow-circle-down"></i>
165
                  </a>
166
                )}
167
              </StyledChatImgMessage>
168
              <br />
169
              <i className="text-right">{message.time}</i>
170
            </div>
171
          </div>
172
        </li>
173
      );
174
    case "document":
175
      return (
176
        <li
177
          key={message.id}
1189 stevensc 178
          className={`clearfix ${message.u === 1 ? "odd" : ""
179
            } m-t-10 conversers${message.u}`}
1 www 180
        >
181
          <div
182
            className="conversation-text"
183
            data-toggle="tooltip"
184
            data-placement="left"
185
            data-html="true"
186
          >
187
            <div className="ctext-wrap">
188
              {senderName(message)}
189
              <StyledChatImgMessage>
190
                <div className="chat_image_container">
191
                  <img
192
                    className="pdf"
193
                    src="/storage/type/default/filename/pdf.png"
194
                    alt="pdf"
195
                  />
196
                </div>
197
                {message.u === 1 ? (
198
                  ""
199
                ) : (
200
                  <a
201
                    href={message.m}
202
                    target="_blank"
203
                    className="chat_image__download_button"
204
                  >
205
                    <i className="fa ti-arrow-circle-down"></i>
206
                  </a>
207
                )}
208
              </StyledChatImgMessage>
209
              <br />
210
              <i className="text-right">{message.time}</i>
211
            </div>
212
          </div>
213
        </li>
214
      );
215
    default:
216
      return (
217
        <li
218
          key={message.id}
1189 stevensc 219
          className={`clearfix ${message.u === 1 ? "odd" : ""
220
            } m-t-10 conversers${message.u}`}
1 www 221
        >
222
          <div
223
            className="conversation-text"
224
            data-toggle="tooltip"
225
            data-placement="left"
226
            data-html="true"
227
          >
228
            <div className="ctext-wrap">
229
              {senderName(message)}
230
              <p className="">
231
                {message.mtype}
232
                <br />
233
                <i className="text-right">{message.time}</i>
234
              </p>
235
            </div>
236
          </div>
237
        </li>
238
      );
239
  }
240
};
241
 
242
export default MessageTemplate;