Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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