diff --git a/clube67/newwhats.local/frontend/components/MessageBubble.tsx b/clube67/newwhats.local/frontend/components/MessageBubble.tsx index a419f32..55eebc0 100644 --- a/clube67/newwhats.local/frontend/components/MessageBubble.tsx +++ b/clube67/newwhats.local/frontend/components/MessageBubble.tsx @@ -328,16 +328,20 @@ const MessageBubble: React.FC = ({ const [isMenuOpen, setIsMenuOpen] = React.useState(false); const [listOpen, setListOpen] = useState(false); const [isRedownloading, setIsRedownloading] = useState(false); + const [mediaUnavailable, setMediaUnavailable] = useState(false); const handleRedownload = useCallback(async () => { - if (!onRedownloadMedia || isRedownloading) return + if (!onRedownloadMedia || isRedownloading || mediaUnavailable) return setIsRedownloading(true) try { await onRedownloadMedia(msg) + } catch (err: any) { + const status = err?.response?.status ?? err?.status + if (status === 400 || status === 404) setMediaUnavailable(true) } finally { setIsRedownloading(false) } - }, [onRedownloadMedia, msg, isRedownloading]) + }, [onRedownloadMedia, msg, isRedownloading, mediaUnavailable]) const isOut = msg.direction === 'out'; const showActionsLeft = isOut; const showActionsRight = !isOut; @@ -696,14 +700,16 @@ const MessageBubble: React.FC = ({ return (
{isRedownloading ?
:
} - {isRedownloading ? 'Baixando...' : 'Toque para baixar áudio'} + + {isRedownloading ? 'Baixando...' : mediaUnavailable ? 'Áudio não disponível' : 'Toque para baixar áudio'} +
{TimestampRow}