mirror of
https://github.com/cheveguerra/whaticket-community.git
synced 2026-04-19 20:29:17 +00:00
fix: ignoring stickers on messages
This commit is contained in:
@@ -209,7 +209,8 @@ const isValidMsg = (msg: WbotMessage): boolean => {
|
|||||||
msg.type === "video" ||
|
msg.type === "video" ||
|
||||||
msg.type === "image" ||
|
msg.type === "image" ||
|
||||||
msg.type === "document" ||
|
msg.type === "document" ||
|
||||||
msg.type === "vcard"
|
msg.type === "vcard" ||
|
||||||
|
msg.type === "sticker"
|
||||||
)
|
)
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -42,9 +42,7 @@ const useStyles = makeStyles(theme => ({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
const filterOptions = createFilterOptions({
|
const filterOptions = createFilterOptions({
|
||||||
matchFrom: "start",
|
|
||||||
trim: true,
|
trim: true,
|
||||||
stringify: option => option.name,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const NewTicketModal = ({ modalOpen, onClose }) => {
|
const NewTicketModal = ({ modalOpen, onClose }) => {
|
||||||
|
|||||||
@@ -15,7 +15,16 @@ import DoneIcon from "@material-ui/icons/Done";
|
|||||||
import DoneAllIcon from "@material-ui/icons/DoneAll";
|
import DoneAllIcon from "@material-ui/icons/DoneAll";
|
||||||
import Paper from "@material-ui/core/Paper";
|
import Paper from "@material-ui/core/Paper";
|
||||||
|
|
||||||
import { IconButton } from "@material-ui/core";
|
import {
|
||||||
|
Avatar,
|
||||||
|
Button,
|
||||||
|
Card,
|
||||||
|
CardActions,
|
||||||
|
CardContent,
|
||||||
|
CardHeader,
|
||||||
|
IconButton,
|
||||||
|
Typography,
|
||||||
|
} from "@material-ui/core";
|
||||||
import { Block, ExpandMore } from "@material-ui/icons";
|
import { Block, ExpandMore } from "@material-ui/icons";
|
||||||
|
|
||||||
import api from "../../services/api";
|
import api from "../../services/api";
|
||||||
@@ -222,6 +231,11 @@ const useStyles = makeStyles(theme => ({
|
|||||||
verticalAlign: "middle",
|
verticalAlign: "middle",
|
||||||
marginLeft: 4,
|
marginLeft: 4,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
vcard: {
|
||||||
|
// display: "flex",
|
||||||
|
marginBottom: 10,
|
||||||
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const reducer = (state, action) => {
|
const reducer = (state, action) => {
|
||||||
@@ -402,6 +416,50 @@ const Ticket = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const parseVcard = vcard => {
|
||||||
|
var Re1 = /^(version|fn|title|org):(.+)$/i;
|
||||||
|
var Re2 = /^([^:;]+);([^:]+):(.+)$/;
|
||||||
|
var ReKey = /item\d{1,2}\./;
|
||||||
|
var fields = {};
|
||||||
|
|
||||||
|
vcard.split(/\r\n|\r|\n/).forEach(function (line) {
|
||||||
|
var results, key;
|
||||||
|
|
||||||
|
if (Re1.test(line)) {
|
||||||
|
results = line.match(Re1);
|
||||||
|
key = results[1].toLowerCase();
|
||||||
|
fields[key] = results[2];
|
||||||
|
} else if (Re2.test(line)) {
|
||||||
|
results = line.match(Re2);
|
||||||
|
key = results[1].replace(ReKey, "").toLowerCase();
|
||||||
|
|
||||||
|
var meta = {};
|
||||||
|
results[2]
|
||||||
|
.split(";")
|
||||||
|
.map(function (p, i) {
|
||||||
|
var match = p.match(/([a-z]+)=(.*)/i);
|
||||||
|
if (match) {
|
||||||
|
return [match[1], match[2]];
|
||||||
|
} else {
|
||||||
|
return ["TYPE" + (i === 0 ? "" : i), p];
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.forEach(function (p) {
|
||||||
|
meta[p[0]] = p[1];
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!fields[key]) fields[key] = [];
|
||||||
|
|
||||||
|
fields[key].push({
|
||||||
|
meta: meta,
|
||||||
|
value: results[3].split(";"),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return fields;
|
||||||
|
};
|
||||||
|
|
||||||
const checkMessaageMedia = message => {
|
const checkMessaageMedia = message => {
|
||||||
if (message.mediaType === "image") {
|
if (message.mediaType === "image") {
|
||||||
return (
|
return (
|
||||||
@@ -430,6 +488,25 @@ const Ticket = () => {
|
|||||||
controls
|
controls
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
if (message.mediaType === "vcard") {
|
||||||
|
const contactVcard = parseVcard(message.body);
|
||||||
|
|
||||||
|
console.log(contactVcard);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Card className={classes.vcard} variant="outlined">
|
||||||
|
<CardHeader
|
||||||
|
avatar={<Avatar aria-label="recipe" />}
|
||||||
|
// action={<Button size="small">Enviar Mensagem</Button>}
|
||||||
|
title={contactVcard.fn}
|
||||||
|
subheader={contactVcard.tel[0].meta.waid}
|
||||||
|
/>
|
||||||
|
<CardActions>
|
||||||
|
<Button size="small">Adicionar Contato</Button>
|
||||||
|
</CardActions>
|
||||||
|
</Card>
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
return (
|
return (
|
||||||
<a href={message.mediaUrl} target="_blank" rel="noopener noreferrer">
|
<a href={message.mediaUrl} target="_blank" rel="noopener noreferrer">
|
||||||
@@ -527,9 +604,10 @@ const Ticket = () => {
|
|||||||
{renderDailyTimestamps(message, index)}
|
{renderDailyTimestamps(message, index)}
|
||||||
{renderMessageDivider(message, index)}
|
{renderMessageDivider(message, index)}
|
||||||
<div className={classes.messageLeft}>
|
<div className={classes.messageLeft}>
|
||||||
{message.mediaUrl && checkMessaageMedia(message)}
|
{(message.mediaUrl || message.mediaType === "vcard") &&
|
||||||
|
checkMessaageMedia(message)}
|
||||||
<div className={classes.textContentItem}>
|
<div className={classes.textContentItem}>
|
||||||
{message.body}
|
{message.mediaType !== "vcard" && message.body}
|
||||||
<span className={classes.timestamp}>
|
<span className={classes.timestamp}>
|
||||||
{format(parseISO(message.createdAt), "HH:mm")}
|
{format(parseISO(message.createdAt), "HH:mm")}
|
||||||
</span>
|
</span>
|
||||||
@@ -553,7 +631,8 @@ const Ticket = () => {
|
|||||||
>
|
>
|
||||||
<ExpandMore />
|
<ExpandMore />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
{message.mediaUrl && checkMessaageMedia(message)}
|
{(message.mediaUrl || message.mediaType === "vcard") &&
|
||||||
|
checkMessaageMedia(message)}
|
||||||
<div
|
<div
|
||||||
className={clsx(classes.textContentItem, {
|
className={clsx(classes.textContentItem, {
|
||||||
[classes.textContentItemDeleted]: message.isDeleted,
|
[classes.textContentItemDeleted]: message.isDeleted,
|
||||||
@@ -566,7 +645,7 @@ const Ticket = () => {
|
|||||||
className={classes.deletedIcon}
|
className={classes.deletedIcon}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{message.body}
|
{message.mediaType !== "vcard" && message.body}
|
||||||
<span className={classes.timestamp}>
|
<span className={classes.timestamp}>
|
||||||
{format(parseISO(message.createdAt), "HH:mm")}
|
{format(parseISO(message.createdAt), "HH:mm")}
|
||||||
{renderMessageAck(message)}
|
{renderMessageAck(message)}
|
||||||
|
|||||||
Reference in New Issue
Block a user