import { useEffect, useMemo, useRef } from 'react'; function getMediaUrl(media) { if (!media?.data || !media?.mimetype) return ''; return `data:${media.mimetype};base64,${media.data}`; } function MediaRenderer({ message, contactId, onLoadMedia, isAgent }) { const mediaUrl = useMemo(() => getMediaUrl(message.media), [message.media]); const mimetype = 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 && !message.media) return null; if (message.mediaLoading || (!message.media?.data && !message.mediaError)) { return (
Carregando midia...
); } if (message.mediaError) { return ( Nao foi possivel carregar a midia. ); } if (mimetype.startsWith('image/')) { return ( {filename} { event.currentTarget.style.transform = 'scale(1.015)'; }} onMouseLeave={(event) => { event.currentTarget.style.transform = 'scale(1)'; }} /> ); } if (mimetype.startsWith('video/')) { return (