FEAT: Exibe mídia recebida no chat via URL direta (image, audio, video, document)
This commit is contained in:
parent
0928d8d0d3
commit
d508df2afb
@ -91,21 +91,14 @@ function DateSeparator({ label }) {
|
||||
);
|
||||
}
|
||||
|
||||
function MediaRenderer({ message, contactId, onLoadMedia, isAgent }) {
|
||||
const mediaUrl = useMemo(() => getMediaUrl(message.media), [message.media]);
|
||||
const mimetype = message.media?.mimetype || '';
|
||||
function MediaRenderer({ message, isAgent }) {
|
||||
const mediaUrl = message.mediaUrl || useMemo(() => getMediaUrl(message.media), [message.media]);
|
||||
const mimetype = message.mediaMimeType || message.media?.mimetype || '';
|
||||
const filename = message.media?.filename || 'arquivo';
|
||||
|
||||
useEffect(() => {
|
||||
if (!message.hasMedia || message.media?.data || message.mediaLoading || message.mediaError) {
|
||||
return;
|
||||
}
|
||||
onLoadMedia?.(contactId, message.id);
|
||||
}, [contactId, message, onLoadMedia]);
|
||||
if (!message.hasMedia && !mediaUrl) return null;
|
||||
|
||||
if (!message.hasMedia && !message.media) return null;
|
||||
|
||||
if (message.mediaLoading || (!message.media?.data && !message.mediaError)) {
|
||||
if (!mediaUrl) {
|
||||
return (
|
||||
<div
|
||||
style={{
|
||||
@ -125,14 +118,6 @@ function MediaRenderer({ message, contactId, onLoadMedia, isAgent }) {
|
||||
);
|
||||
}
|
||||
|
||||
if (message.mediaError) {
|
||||
return (
|
||||
<span style={{ color: isAgent ? '#fff' : 'var(--color-text-soft)', fontWeight: 700 }}>
|
||||
Não foi possível carregar a mídia.
|
||||
</span>
|
||||
);
|
||||
}
|
||||
|
||||
if (mimetype.startsWith('image/')) {
|
||||
return (
|
||||
<a href={mediaUrl} target="_blank" rel="noreferrer" style={{ display: 'block' }}>
|
||||
@ -600,8 +585,6 @@ export function ChatWindow({
|
||||
>
|
||||
<MediaRenderer
|
||||
message={message}
|
||||
contactId={safeContact.id}
|
||||
onLoadMedia={onLoadMedia}
|
||||
isAgent={isAgent}
|
||||
/>
|
||||
{parsedText.senderLabel ? (
|
||||
|
||||
@ -96,14 +96,18 @@ function normalizeChat(chat) {
|
||||
function normalizeMessage(message) {
|
||||
const id = getSerializedId(message.id) || message.id || `msg-${Date.now()}`;
|
||||
const sender = message.sender || (message.fromMe ? 'agent' : 'customer');
|
||||
const mediaUrl = message.mediaUrl || message.media_path || null;
|
||||
const mediaMimeType = message.mediaMimeType || message.media_mime_type || null;
|
||||
return {
|
||||
id,
|
||||
chatId: message.from || message.to || message.chatId,
|
||||
sender,
|
||||
text: message.body ?? message.text ?? '',
|
||||
timestamp: message.timestamp,
|
||||
hasMedia: Boolean(message.hasMedia || message.media),
|
||||
hasMedia: Boolean(message.hasMedia || message.media || mediaUrl),
|
||||
media: message.media || null,
|
||||
mediaUrl,
|
||||
mediaMimeType,
|
||||
mediaLoading: false,
|
||||
mediaError: null,
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user