fix bugs vcard

[ PT-BR ] -  Corrigido bug quando enviado vcard sem numero de telefone.

[ US ] - Corrected bug when sent vcard without phone number.
This commit is contained in:
jhonnatanBezerra
2022-08-04 17:52:39 -04:00
parent e13f93db3d
commit 6b56b07214
2 changed files with 84 additions and 83 deletions

View File

@@ -416,56 +416,56 @@ const MessagesList = ({ ticketId, isGroup }) => {
}; };
const checkMessageMedia = (message) => { const checkMessageMedia = (message) => {
if(message.mediaType === "location" && message.body.split('|').length >= 2) { if (message.mediaType === "location" && message.body.split('|').length >= 2) {
let locationParts = message.body.split('|') let locationParts = message.body.split('|')
let imageLocation = locationParts[0] let imageLocation = locationParts[0]
let linkLocation = locationParts[1] let linkLocation = locationParts[1]
let descriptionLocation = null let descriptionLocation = null
if(locationParts.length > 2) if (locationParts.length > 2)
descriptionLocation = message.body.split('|')[2] descriptionLocation = message.body.split('|')[2]
return <LocationPreview image={imageLocation} link={linkLocation} description={descriptionLocation} /> return <LocationPreview image={imageLocation} link={linkLocation} description={descriptionLocation} />
} }
else if (message.mediaType === "vcard") { else if (message.mediaType === "vcard") {
//console.log("vcard") //console.log("vcard")
//console.log(message) //console.log(message)
let array = message.body.split("\n"); let array = message.body.split("\n");
let obj = []; let obj = [];
let contact = ""; let contact = "";
for (let index = 0; index < array.length; index++) { for (let index = 0; index < array.length; index++) {
const v = array[index]; const v = array[index];
let values = v.split(":"); let values = v.split(":");
for (let ind = 0; ind < values.length; ind++) { for (let ind = 0; ind < values.length; ind++) {
if (values[ind].indexOf("+") !== -1) { if (values[ind].indexOf("+") !== -1) {
obj.push({ number: values[ind] }); obj.push({ number: values[ind] });
} }
if (values[ind].indexOf("FN") !== -1) { if (values[ind].indexOf("FN") !== -1) {
contact = values[ind + 1]; contact = values[ind + 1];
} }
} }
} }
return <VcardPreview contact={contact} numbers={obj[0].number} /> return <VcardPreview contact={contact} numbers={obj[0]?.number} />
} }
/*else if (message.mediaType === "multi_vcard") { /*else if (message.mediaType === "multi_vcard") {
console.log("multi_vcard") console.log("multi_vcard")
console.log(message) console.log(message)
if(message.body !== null && message.body !== "") { if(message.body !== null && message.body !== "") {
let newBody = JSON.parse(message.body) let newBody = JSON.parse(message.body)
return ( return (
<> <>
{ {
newBody.map(v => ( newBody.map(v => (
<VcardPreview contact={v.name} numbers={v.number} /> <VcardPreview contact={v.name} numbers={v.number} />
)) ))
} }
</> </>
) )
} else return (<></>) } else return (<></>)
}*/ }*/
else if (message.mediaType === "image") { else if (message.mediaType === "image") {
return <ModalImageCors imageUrl={message.mediaUrl} />; return <ModalImageCors imageUrl={message.mediaUrl} />;
} else if (message.mediaType === "audio") { } else if (message.mediaType === "audio") {
return <Audio url={message.mediaUrl} /> return <Audio url={message.mediaUrl} />
@@ -614,8 +614,8 @@ const MessagesList = ({ ticketId, isGroup }) => {
{message.contact?.name} {message.contact?.name}
</span> </span>
)} )}
{(message.mediaUrl || message.mediaType === "location" || message.mediaType === "vcard" {(message.mediaUrl || message.mediaType === "location" || message.mediaType === "vcard"
//|| message.mediaType === "multi_vcard" //|| message.mediaType === "multi_vcard"
) && checkMessageMedia(message)} ) && checkMessageMedia(message)}
<div className={classes.textContentItem}> <div className={classes.textContentItem}>
{message.quotedMsg && renderQuotedMessage(message)} {message.quotedMsg && renderQuotedMessage(message)}
@@ -643,8 +643,8 @@ const MessagesList = ({ ticketId, isGroup }) => {
> >
<ExpandMore /> <ExpandMore />
</IconButton> </IconButton>
{(message.mediaUrl || message.mediaType === "location" || message.mediaType === "vcard" {(message.mediaUrl || message.mediaType === "location" || message.mediaType === "vcard"
//|| message.mediaType === "multi_vcard" //|| message.mediaType === "multi_vcard"
) && checkMessageMedia(message)} ) && checkMessageMedia(message)}
<div <div
className={clsx(classes.textContentItem, { className={clsx(classes.textContentItem, {

View File

@@ -23,11 +23,12 @@ const VcardPreview = ({ contact, numbers }) => {
useEffect(() => { useEffect(() => {
const delayDebounceFn = setTimeout(() => { const delayDebounceFn = setTimeout(() => {
const fetchContacts = async() => { const fetchContacts = async () => {
try { try {
let contactObj = { let contactObj = {
name: contact, name: contact,
number: numbers.replace(/\D/g, ""), // number: numbers.replace(/\D/g, ""),
number: numbers !== undefined && numbers.replace(/\D/g, ""),
email: "" email: ""
} }
const { data } = await api.post("/contact", contactObj); const { data } = await api.post("/contact", contactObj);
@@ -43,7 +44,7 @@ const VcardPreview = ({ contact, numbers }) => {
return () => clearTimeout(delayDebounceFn); return () => clearTimeout(delayDebounceFn);
}, [contact, numbers]); }, [contact, numbers]);
const handleNewChat = async() => { const handleNewChat = async () => {
try { try {
const { data: ticket } = await api.post("/tickets", { const { data: ticket } = await api.post("/tickets", {
contactId: selectedContact.id, contactId: selectedContact.id,
@@ -57,32 +58,32 @@ const VcardPreview = ({ contact, numbers }) => {
} }
return ( return (
<> <>
<div style={{ <div style={{
minWidth: "250px", minWidth: "250px",
}}> }}>
<Grid container spacing={1}> <Grid container spacing={1}>
<Grid item xs={2}> <Grid item xs={2}>
<Avatar src={selectedContact.profilePicUrl} /> <Avatar src={selectedContact.profilePicUrl} />
</Grid> </Grid>
<Grid item xs={9}> <Grid item xs={9}>
<Typography style={{ marginTop: "12px", marginLeft: "10px" }} variant="subtitle1" color="primary" gutterBottom> <Typography style={{ marginTop: "12px", marginLeft: "10px" }} variant="subtitle1" color="primary" gutterBottom>
{selectedContact.name} {selectedContact.name}
</Typography> </Typography>
</Grid> </Grid>
<Grid item xs={12}> <Grid item xs={12}>
<Divider /> <Divider />
<Button <Button
fullWidth fullWidth
color="primary" color="primary"
onClick={handleNewChat} onClick={handleNewChat}
disabled={!selectedContact.number} disabled={!selectedContact.number}
>Conversar</Button> >Conversar</Button>
</Grid> </Grid>
</Grid> </Grid>
</div> </div>
</> </>
); );
}; };