mirror of
https://github.com/cheveguerra/whaticket-community.git
synced 2026-04-19 20:29:17 +00:00
@@ -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, {
|
||||||
|
|||||||
@@ -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>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user