contentoh-components-library 21.2.73 → 21.2.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.development +1 -4
- package/dist/components/molecules/CustomSelect/CustomSelect.stories.js +22 -21
- package/dist/components/molecules/CustomSelect/SelectItem.js +1 -10
- package/dist/components/molecules/HeaderTop/index.js +5 -10
- package/dist/components/molecules/HeaderTop/styles.js +1 -1
- package/package.json +1 -6
- package/src/components/molecules/CustomSelect/CustomSelect.stories.js +12 -20
- package/src/components/molecules/CustomSelect/SelectItem.js +0 -7
- package/src/components/molecules/HeaderTop/index.js +6 -10
- package/src/components/molecules/HeaderTop/styles.js +0 -4
- package/src/assets/images/chatPopup/Spinner.gif +0 -0
- package/src/assets/images/chatPopup/close.svg +0 -3
- package/src/assets/images/chatPopup/defaultImage.png +0 -0
- package/src/assets/images/chatPopup/defaultProfile.png +0 -0
- package/src/assets/images/chatPopup/doc.svg +0 -1
- package/src/assets/images/chatPopup/document.svg +0 -1
- package/src/assets/images/chatPopup/iconChat.svg +0 -19
- package/src/assets/images/chatPopup/iconPlus.svg +0 -3
- package/src/assets/images/chatPopup/pdf.svg +0 -75
- package/src/assets/images/chatPopup/remove.svg +0 -4
- package/src/assets/images/chatPopup/send.svg +0 -3
- package/src/assets/images/chatPopup/svgIcon.svg +0 -109
- package/src/assets/images/chatPopup/upload_file.svg +0 -3
- package/src/assets/images/chatPopup/xls.svg +0 -53
- package/src/assets/images/customSelect/starIcon.svg +0 -14
- package/src/components/atoms/ChatPopUp/ChatPopUp.stories.js +0 -11
- package/src/components/atoms/ChatPopUp/index.js +0 -541
- package/src/components/atoms/ChatPopUp/styles.js +0 -278
- package/src/components/atoms/ChatPopUp/utils/handlersChat.js +0 -104
- package/src/components/atoms/Tooltip/Tooltip.stories.js +0 -15
- package/src/components/atoms/Tooltip/index.js +0 -35
- package/src/components/atoms/Tooltip/styles.js +0 -5
|
@@ -1,541 +0,0 @@
|
|
|
1
|
-
import { Container, Slider } from "./styles";
|
|
2
|
-
import { useEffect, useState } from "react";
|
|
3
|
-
import chatIcon from "../../../assets/images/chatPopup/iconChat.svg";
|
|
4
|
-
import closeChat from "../../../assets/images/chatPopup/close.svg";
|
|
5
|
-
import send from "../../../assets/images/chatPopup/send.svg";
|
|
6
|
-
import iconPlus from "../../../assets/images/chatPopup/iconPlus.svg";
|
|
7
|
-
import upload from "../../../assets/images/chatPopup/upload_file.svg";
|
|
8
|
-
import defaultProfile from "../../../assets/images/chatPopup/defaultProfile.png";
|
|
9
|
-
import defaultImage from "../../../assets/images/chatPopup/defaultImage.png";
|
|
10
|
-
import defaultSpinner from "../../../assets/images/chatPopup/Spinner.gif";
|
|
11
|
-
import doc from "../../../assets/images/chatPopup/doc.svg";
|
|
12
|
-
import xls from "../../../assets/images/chatPopup/xls.svg";
|
|
13
|
-
import documentType from "../../../assets/images/chatPopup/document.svg";
|
|
14
|
-
import svg from "../../../assets/images/chatPopup/svgIcon.svg";
|
|
15
|
-
import moment from "moment";
|
|
16
|
-
import AWS from "aws-sdk";
|
|
17
|
-
import ReactImageFallback from "react-image-fallback";
|
|
18
|
-
import { v4 as uuidv4 } from "uuid";
|
|
19
|
-
import { getBD, createItemBD } from "./utils/handlersChat";
|
|
20
|
-
import { getProfilePicture } from "../../../global-files/data";
|
|
21
|
-
import { CustomTooltip } from "../Tooltip";
|
|
22
|
-
|
|
23
|
-
const S3_BUCKET = process.env.REACT_APP_IMAGES_BUCKET;
|
|
24
|
-
const REGION = "us-east-1";
|
|
25
|
-
const Buffer = require("buffer/").Buffer;
|
|
26
|
-
|
|
27
|
-
AWS.config.update({
|
|
28
|
-
accessKeyId: process.env.REACT_APP_KEY_UPLOAD_TO_S3,
|
|
29
|
-
secretAccessKey: process.env.REACT_APP_ACCESS_KEY_UPLOAD_TO_S3,
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
const myBucket = new AWS.S3({
|
|
33
|
-
params: { Bucket: S3_BUCKET },
|
|
34
|
-
region: REGION,
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
export const ChatPopUp = ({ props }) => {
|
|
38
|
-
const [showMenu, setShowMenu] = useState(false);
|
|
39
|
-
const [items, setItems] = useState(); // items que vienen de la BD
|
|
40
|
-
const [customItems, setCustomItems] = useState([]); // JSX acorde al tipo de los items
|
|
41
|
-
const [current_id_company, setCurrent_id_company] = useState(0);
|
|
42
|
-
const [valueInput, setValueInput] = useState("");
|
|
43
|
-
const [processUpdateID, setProcessUpdateID] = useState();
|
|
44
|
-
const [countUpdate, setCountUpdate] = useState(0);
|
|
45
|
-
let arrayIMG = { data: { ext: [], nameFile: [] } };
|
|
46
|
-
const Authorization = props.chat_authorization;
|
|
47
|
-
const prop_id_article = props.chat_id_article;
|
|
48
|
-
const prop_version_article = props.chat_version_article;
|
|
49
|
-
|
|
50
|
-
useEffect(() => {
|
|
51
|
-
//setItems([])
|
|
52
|
-
getInitial();
|
|
53
|
-
}, []);
|
|
54
|
-
|
|
55
|
-
useEffect(() => {
|
|
56
|
-
if (!items) return;
|
|
57
|
-
renderItems();
|
|
58
|
-
//console.log("update en 10s");
|
|
59
|
-
//const processUpdate = setTimeout( () => {
|
|
60
|
-
// setCountUpdate( (prev) => prev+1 )
|
|
61
|
-
//} , 25000 )
|
|
62
|
-
//setProcessUpdateID(processUpdate);
|
|
63
|
-
}, [items]);
|
|
64
|
-
|
|
65
|
-
// implementar update cada 30s
|
|
66
|
-
useEffect(() => {
|
|
67
|
-
if (countUpdate == 0) return;
|
|
68
|
-
getUpdate();
|
|
69
|
-
}, [countUpdate]);
|
|
70
|
-
|
|
71
|
-
const renderItems = async () => {
|
|
72
|
-
let jsxItems = [];
|
|
73
|
-
let date = undefined;
|
|
74
|
-
let countDate = 1;
|
|
75
|
-
for (const item of items) {
|
|
76
|
-
if (!date) {
|
|
77
|
-
date = getFullDate(new Date(item.creation_date));
|
|
78
|
-
} else {
|
|
79
|
-
let newDate = getFullDate(new Date(item.creation_date));
|
|
80
|
-
if (newDate != date) {
|
|
81
|
-
jsxItems.push(
|
|
82
|
-
<div className="group-date" key={"itemDate-" + countDate++}>
|
|
83
|
-
<hr />
|
|
84
|
-
<p>{date}</p>
|
|
85
|
-
<hr />
|
|
86
|
-
</div>
|
|
87
|
-
);
|
|
88
|
-
date = newDate;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// manejo de los tipos items
|
|
93
|
-
if (item.user.id_company == current_id_company) {
|
|
94
|
-
jsxItems.push(
|
|
95
|
-
<li className="own-message" key={"item-" + item.id}>
|
|
96
|
-
<CustomTooltip
|
|
97
|
-
className={"tooltip-userName"}
|
|
98
|
-
componentTooltip={<label>{item.user.name}</label>}
|
|
99
|
-
>
|
|
100
|
-
<div className="profile">
|
|
101
|
-
<ReactImageFallback
|
|
102
|
-
src={getProfilePicture(item.user.id, 24, 24)}
|
|
103
|
-
fallbackImage={defaultProfile}
|
|
104
|
-
initialImage={defaultSpinner}
|
|
105
|
-
alt="profile"
|
|
106
|
-
/>
|
|
107
|
-
</div>
|
|
108
|
-
</CustomTooltip>
|
|
109
|
-
|
|
110
|
-
{item.value_type == "txt"
|
|
111
|
-
? renderTXT(item)
|
|
112
|
-
: item.value_type == "img"
|
|
113
|
-
? renderIMG(item)
|
|
114
|
-
: renderFILE(item)}
|
|
115
|
-
<div className="date">
|
|
116
|
-
<p>{getTime(item.creation_date)}</p>
|
|
117
|
-
</div>
|
|
118
|
-
</li>
|
|
119
|
-
);
|
|
120
|
-
} else {
|
|
121
|
-
jsxItems.push(
|
|
122
|
-
<li className="" key={"item-" + item.id}>
|
|
123
|
-
<CustomTooltip
|
|
124
|
-
className={"tooltip-userName"}
|
|
125
|
-
componentTooltip={<label>{item.user.name}</label>}
|
|
126
|
-
>
|
|
127
|
-
<div className="profile">
|
|
128
|
-
<ReactImageFallback
|
|
129
|
-
src={getProfilePicture(item.user.id, 24, 24)}
|
|
130
|
-
fallbackImage={defaultProfile}
|
|
131
|
-
initialImage={defaultSpinner}
|
|
132
|
-
alt="profile"
|
|
133
|
-
/>
|
|
134
|
-
</div>
|
|
135
|
-
</CustomTooltip>
|
|
136
|
-
|
|
137
|
-
{item.value_type == "txt"
|
|
138
|
-
? renderTXT(item)
|
|
139
|
-
: item.value_type == "img"
|
|
140
|
-
? renderIMG(item)
|
|
141
|
-
: renderFILE(item)}
|
|
142
|
-
<div className="date">
|
|
143
|
-
<p>{getTime(item.creation_date)}</p>
|
|
144
|
-
</div>
|
|
145
|
-
</li>
|
|
146
|
-
);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
if (date) {
|
|
150
|
-
jsxItems.push(
|
|
151
|
-
<div className="group-date" key={"itemDate-" + countDate++}>
|
|
152
|
-
<hr />
|
|
153
|
-
<p>{date}</p>
|
|
154
|
-
<hr />
|
|
155
|
-
</div>
|
|
156
|
-
);
|
|
157
|
-
}
|
|
158
|
-
setCustomItems(jsxItems);
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
const getBase64 = async (file) => {
|
|
162
|
-
return new Promise((resolve) => {
|
|
163
|
-
const reader = new FileReader();
|
|
164
|
-
reader.addEventListener("loadend", () => {
|
|
165
|
-
let base64 = reader.result.replace(/^data:\w+\/\w+.*;base64,/, "");
|
|
166
|
-
resolve(base64);
|
|
167
|
-
});
|
|
168
|
-
reader.readAsDataURL(file);
|
|
169
|
-
});
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
const createPreview = async (file) => {
|
|
173
|
-
if (
|
|
174
|
-
file.type.split("/")[0] === "image" ||
|
|
175
|
-
file.type.split("/")[0] === "application" ||
|
|
176
|
-
file.type.split("/")[0] === "text"
|
|
177
|
-
) {
|
|
178
|
-
let base64IMG = await getBase64(file);
|
|
179
|
-
let ext = file.name.split(".")[file.name.split(".").length - 1];
|
|
180
|
-
arrayIMG.data.ext.push(ext);
|
|
181
|
-
arrayIMG.data.nameFile.push(file.name.split(".")[0]);
|
|
182
|
-
const fileB = Buffer.from(base64IMG, "base64");
|
|
183
|
-
const params = {
|
|
184
|
-
ACL: "public-read",
|
|
185
|
-
Body: fileB,
|
|
186
|
-
Bucket: S3_BUCKET,
|
|
187
|
-
Key: `${prop_id_article}/${prop_version_article}/chat/${
|
|
188
|
-
arrayIMG.data.nameFile[0]
|
|
189
|
-
}-${uuidv4()}.${arrayIMG.data.ext[0]}`,
|
|
190
|
-
};
|
|
191
|
-
await myBucket.putObject(params).promise();
|
|
192
|
-
if (file.type.split("/")[0] === "image") {
|
|
193
|
-
if (arrayIMG.data.ext[0] === "svg") {
|
|
194
|
-
onClickInsertar("file", params.Key);
|
|
195
|
-
} else onClickInsertar("img", params.Key);
|
|
196
|
-
} else if (
|
|
197
|
-
file.type.split("/")[0] === "application" ||
|
|
198
|
-
file.type.split("/")[0] === "text"
|
|
199
|
-
) {
|
|
200
|
-
onClickInsertar("file", params.Key);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
arrayIMG.data.ext.shift();
|
|
204
|
-
arrayIMG.data.nameFile.shift();
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
const getTime = (time) => {
|
|
208
|
-
const fecha = moment(time).format("LT");
|
|
209
|
-
const fechaHoy = new Date();
|
|
210
|
-
if (moment(time).format("L") === moment(fechaHoy).format("L")) {
|
|
211
|
-
return moment(time).format("LT");
|
|
212
|
-
} else return fecha;
|
|
213
|
-
};
|
|
214
|
-
|
|
215
|
-
const renderTXT = (item) => {
|
|
216
|
-
return (
|
|
217
|
-
<div className="body-message">
|
|
218
|
-
<p>{item.value}</p>
|
|
219
|
-
</div>
|
|
220
|
-
);
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
const renderIMG = (item) => {
|
|
224
|
-
return (
|
|
225
|
-
<div className="img-file">
|
|
226
|
-
<a
|
|
227
|
-
href={`https://content-management-images.s3.amazonaws.com/${item.value}`}
|
|
228
|
-
>
|
|
229
|
-
<ReactImageFallback
|
|
230
|
-
src={`https://content-management-images.s3.amazonaws.com/${item.value}`}
|
|
231
|
-
fallbackImage={defaultImage}
|
|
232
|
-
initialImage={defaultSpinner}
|
|
233
|
-
alt={item.value}
|
|
234
|
-
/>
|
|
235
|
-
</a>
|
|
236
|
-
</div>
|
|
237
|
-
);
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
const renderFILE = (item) => {
|
|
241
|
-
let ext = item.value.split(".")[item.value.split(".").length - 1];
|
|
242
|
-
let imgFile;
|
|
243
|
-
if (ext === "docx" || ext === "doc" || ext === "docs") {
|
|
244
|
-
imgFile = doc;
|
|
245
|
-
} else if (
|
|
246
|
-
ext === "xls" ||
|
|
247
|
-
ext === "xlsx" ||
|
|
248
|
-
ext === "csv" ||
|
|
249
|
-
ext === "tsv"
|
|
250
|
-
) {
|
|
251
|
-
imgFile = xls;
|
|
252
|
-
} else if (ext === "svg") {
|
|
253
|
-
imgFile = svg;
|
|
254
|
-
} else if (ext === "pdf") {
|
|
255
|
-
imgFile = "https://eu-phoenix.eu/wp-content/uploads/2022/03/pdf-icon.svg";
|
|
256
|
-
} else imgFile = documentType;
|
|
257
|
-
|
|
258
|
-
return (
|
|
259
|
-
<div className="body-message">
|
|
260
|
-
<a
|
|
261
|
-
href={`https://content-management-images.s3.amazonaws.com/${item.value}`}
|
|
262
|
-
>
|
|
263
|
-
<div>
|
|
264
|
-
<img src={imgFile} alt={item.value}></img>
|
|
265
|
-
<p>{item.value.split("/")[3]}</p>
|
|
266
|
-
</div>
|
|
267
|
-
</a>
|
|
268
|
-
</div>
|
|
269
|
-
);
|
|
270
|
-
};
|
|
271
|
-
|
|
272
|
-
const getInitial = async () => {
|
|
273
|
-
let response = await getBD(
|
|
274
|
-
prop_id_article,
|
|
275
|
-
prop_version_article,
|
|
276
|
-
"initial",
|
|
277
|
-
"",
|
|
278
|
-
Authorization
|
|
279
|
-
);
|
|
280
|
-
if (!response.body) {
|
|
281
|
-
// console.log("=====================");
|
|
282
|
-
// console.log("ERROR INITIAL");
|
|
283
|
-
// console.log("=====================");
|
|
284
|
-
// console.log(response);
|
|
285
|
-
console.log(
|
|
286
|
-
"Unable to retrieve company and user from database, please report this to TI"
|
|
287
|
-
);
|
|
288
|
-
setItems([]);
|
|
289
|
-
} else {
|
|
290
|
-
// console.log("=====================");
|
|
291
|
-
// console.log("ITEMS INICIALES");
|
|
292
|
-
// console.log("=====================");
|
|
293
|
-
// console.log(response.body.items);
|
|
294
|
-
setCurrent_id_company(response.body.current_id_company);
|
|
295
|
-
setItems(response.body.items);
|
|
296
|
-
}
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
const getUpdate = async () => {
|
|
300
|
-
let currentItems = items.slice();
|
|
301
|
-
let dateItem = currentItems[0]?.creation_date ?? "";
|
|
302
|
-
let response = {};
|
|
303
|
-
if (dateItem == "") {
|
|
304
|
-
await getInitial();
|
|
305
|
-
return;
|
|
306
|
-
} else {
|
|
307
|
-
response = await getBD(
|
|
308
|
-
prop_id_article,
|
|
309
|
-
prop_version_article,
|
|
310
|
-
"update_latest",
|
|
311
|
-
dateItem,
|
|
312
|
-
Authorization
|
|
313
|
-
);
|
|
314
|
-
}
|
|
315
|
-
if (!response.body) {
|
|
316
|
-
// console.log("=====================");
|
|
317
|
-
// console.log("ERROR UPDATE LATEST");
|
|
318
|
-
// console.log("=====================");
|
|
319
|
-
console.log(
|
|
320
|
-
"Unable to retrieve company and user from database, please report this to TI"
|
|
321
|
-
);
|
|
322
|
-
setItems(currentItems);
|
|
323
|
-
} else {
|
|
324
|
-
// console.log("=====================");
|
|
325
|
-
// console.log("ITEMS DEL UPDATE LATEST");
|
|
326
|
-
// console.log("=====================");
|
|
327
|
-
// console.log(response.body.items);
|
|
328
|
-
let newItems = response.body.items;
|
|
329
|
-
newItems = newItems.concat(currentItems);
|
|
330
|
-
setItems(newItems);
|
|
331
|
-
}
|
|
332
|
-
// setCountUpdate((prev) => prev + 1);
|
|
333
|
-
};
|
|
334
|
-
|
|
335
|
-
const getFullDate = (date = new Date()) => {
|
|
336
|
-
let dateString = "";
|
|
337
|
-
switch (date.getDay()) {
|
|
338
|
-
case 0:
|
|
339
|
-
dateString += "Dom ";
|
|
340
|
-
break;
|
|
341
|
-
case 1:
|
|
342
|
-
dateString += "Lun ";
|
|
343
|
-
break;
|
|
344
|
-
case 2:
|
|
345
|
-
dateString += "Mar ";
|
|
346
|
-
break;
|
|
347
|
-
case 3:
|
|
348
|
-
dateString += "Mie ";
|
|
349
|
-
break;
|
|
350
|
-
case 4:
|
|
351
|
-
dateString += "Jue ";
|
|
352
|
-
break;
|
|
353
|
-
case 5:
|
|
354
|
-
dateString += "Vie ";
|
|
355
|
-
break;
|
|
356
|
-
case 6:
|
|
357
|
-
dateString += "Sab ";
|
|
358
|
-
break;
|
|
359
|
-
default:
|
|
360
|
-
dateString += "-- ";
|
|
361
|
-
break;
|
|
362
|
-
}
|
|
363
|
-
dateString += date.getDate() + " ";
|
|
364
|
-
switch (date.getMonth() + 1) {
|
|
365
|
-
case 1:
|
|
366
|
-
dateString += "Ene ";
|
|
367
|
-
break;
|
|
368
|
-
case 2:
|
|
369
|
-
dateString += "Feb ";
|
|
370
|
-
break;
|
|
371
|
-
case 3:
|
|
372
|
-
dateString += "Mar ";
|
|
373
|
-
break;
|
|
374
|
-
case 4:
|
|
375
|
-
dateString += "Abr ";
|
|
376
|
-
break;
|
|
377
|
-
case 5:
|
|
378
|
-
dateString += "May ";
|
|
379
|
-
break;
|
|
380
|
-
case 6:
|
|
381
|
-
dateString += "Jun ";
|
|
382
|
-
break;
|
|
383
|
-
case 7:
|
|
384
|
-
dateString += "Jul ";
|
|
385
|
-
break;
|
|
386
|
-
case 8:
|
|
387
|
-
dateString += "Ago ";
|
|
388
|
-
break;
|
|
389
|
-
case 9:
|
|
390
|
-
dateString += "Sep ";
|
|
391
|
-
break;
|
|
392
|
-
case 10:
|
|
393
|
-
dateString += "Oct ";
|
|
394
|
-
break;
|
|
395
|
-
case 11:
|
|
396
|
-
dateString += "Nov ";
|
|
397
|
-
break;
|
|
398
|
-
case 12:
|
|
399
|
-
dateString += "Dic ";
|
|
400
|
-
break;
|
|
401
|
-
}
|
|
402
|
-
dateString += date.getFullYear();
|
|
403
|
-
return dateString;
|
|
404
|
-
};
|
|
405
|
-
|
|
406
|
-
const onClickLoadMore = async () => {
|
|
407
|
-
clearTimeout(processUpdateID);
|
|
408
|
-
let currentItems = items.slice();
|
|
409
|
-
let dateItem = currentItems[currentItems.length - 1]?.creation_date ?? "";
|
|
410
|
-
let response = {};
|
|
411
|
-
if (dateItem == "") {
|
|
412
|
-
await getInitial();
|
|
413
|
-
return;
|
|
414
|
-
} else {
|
|
415
|
-
response = await getBD(
|
|
416
|
-
prop_id_article,
|
|
417
|
-
prop_version_article,
|
|
418
|
-
"load_more",
|
|
419
|
-
dateItem,
|
|
420
|
-
Authorization
|
|
421
|
-
);
|
|
422
|
-
}
|
|
423
|
-
if (!response.body) {
|
|
424
|
-
// console.log("=====================");
|
|
425
|
-
// console.log("ERROR LOAD MORE");
|
|
426
|
-
// console.log("=====================");
|
|
427
|
-
console.log(
|
|
428
|
-
"Unable to retrieve company and user from database, please report this to TI"
|
|
429
|
-
);
|
|
430
|
-
setItems(currentItems);
|
|
431
|
-
} else {
|
|
432
|
-
// console.log("=====================");
|
|
433
|
-
// console.log("ITEMS DEL LOAD MORE");
|
|
434
|
-
// console.log("=====================");
|
|
435
|
-
// console.log(response.body.items);
|
|
436
|
-
let newItems = currentItems.concat(response.body.items);
|
|
437
|
-
setItems(newItems);
|
|
438
|
-
}
|
|
439
|
-
};
|
|
440
|
-
const onClickInsertar = async (valueType, valueInput) => {
|
|
441
|
-
clearTimeout(processUpdateID);
|
|
442
|
-
let currentItems = items.slice();
|
|
443
|
-
let response = await createItemBD(
|
|
444
|
-
prop_id_article,
|
|
445
|
-
prop_version_article,
|
|
446
|
-
valueType,
|
|
447
|
-
valueInput,
|
|
448
|
-
Authorization
|
|
449
|
-
);
|
|
450
|
-
if (!response.body) {
|
|
451
|
-
// console.log("=====================");
|
|
452
|
-
// console.log("ERROR INSERTAR");
|
|
453
|
-
// console.log("=====================");
|
|
454
|
-
console.log(
|
|
455
|
-
"Unable to retrieve company and user from database, please report this to TI"
|
|
456
|
-
);
|
|
457
|
-
setItems(currentItems);
|
|
458
|
-
} else {
|
|
459
|
-
setValueInput("");
|
|
460
|
-
if (currentItems?.length == 0) {
|
|
461
|
-
// console.log("NUEVO ITEM <> NUEVO INITIAL");
|
|
462
|
-
await getInitial();
|
|
463
|
-
} else {
|
|
464
|
-
// console.log("NUEVO ITEM <> NUEVO UPDATE");
|
|
465
|
-
await getUpdate();
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
};
|
|
469
|
-
return (
|
|
470
|
-
<>
|
|
471
|
-
<Container>
|
|
472
|
-
<img
|
|
473
|
-
src={chatIcon}
|
|
474
|
-
alt="chat icon"
|
|
475
|
-
className="icon-chat"
|
|
476
|
-
onClick={() => {
|
|
477
|
-
setShowMenu(!showMenu);
|
|
478
|
-
}}
|
|
479
|
-
/>
|
|
480
|
-
</Container>
|
|
481
|
-
{showMenu && (
|
|
482
|
-
<Slider id="div-slider" showMenu={showMenu}>
|
|
483
|
-
<button
|
|
484
|
-
onClick={() => {
|
|
485
|
-
setShowMenu(false);
|
|
486
|
-
}}
|
|
487
|
-
className="close"
|
|
488
|
-
>
|
|
489
|
-
<img src={closeChat} alt="close-chat"></img>
|
|
490
|
-
</button>
|
|
491
|
-
<div className="content-chat">
|
|
492
|
-
<button
|
|
493
|
-
onClick={async (event) => onClickLoadMore()}
|
|
494
|
-
className="cargar-mas"
|
|
495
|
-
>
|
|
496
|
-
<img src={iconPlus} alt="Cargar más" />
|
|
497
|
-
cargar más
|
|
498
|
-
</button>
|
|
499
|
-
<ul id="myListChat">{customItems}</ul>
|
|
500
|
-
</div>
|
|
501
|
-
<div className="input-chat">
|
|
502
|
-
<input
|
|
503
|
-
className="send-message"
|
|
504
|
-
placeholder="Escribe Aquí..."
|
|
505
|
-
id="id-input-message"
|
|
506
|
-
onKeyDown={(e) => {
|
|
507
|
-
switch (e.key) {
|
|
508
|
-
case "Enter":
|
|
509
|
-
onClickInsertar("txt", valueInput);
|
|
510
|
-
break;
|
|
511
|
-
default:
|
|
512
|
-
break;
|
|
513
|
-
}
|
|
514
|
-
}}
|
|
515
|
-
value={valueInput}
|
|
516
|
-
onChange={(event) => setValueInput(event.target.value)}
|
|
517
|
-
/>
|
|
518
|
-
<input
|
|
519
|
-
type="file"
|
|
520
|
-
id="file"
|
|
521
|
-
accept="image/*,text/*,application/*"
|
|
522
|
-
className="add-picture-input"
|
|
523
|
-
onChange={(e) => {
|
|
524
|
-
createPreview(document.getElementById("file").files[0]);
|
|
525
|
-
}}
|
|
526
|
-
/>
|
|
527
|
-
<label htmlFor="file" className={"upload"}>
|
|
528
|
-
<img src={upload} alt="send chat"></img>
|
|
529
|
-
</label>
|
|
530
|
-
<button
|
|
531
|
-
onClick={async () => onClickInsertar("txt", valueInput)}
|
|
532
|
-
className="send"
|
|
533
|
-
>
|
|
534
|
-
<img src={send} alt="send chat"></img>
|
|
535
|
-
</button>
|
|
536
|
-
</div>
|
|
537
|
-
</Slider>
|
|
538
|
-
)}
|
|
539
|
-
</>
|
|
540
|
-
);
|
|
541
|
-
};
|