diff --git a/clube67/newwhats.local/frontend/components/MessageArea.tsx b/clube67/newwhats.local/frontend/components/MessageArea.tsx index 5464329..b1aaa07 100644 --- a/clube67/newwhats.local/frontend/components/MessageArea.tsx +++ b/clube67/newwhats.local/frontend/components/MessageArea.tsx @@ -61,10 +61,11 @@ const MessageArea: React.FC = ({ // ── Re-download de mídia não baixada ───────────────────────────────────── const handleRedownloadMedia = useCallback(async (msg: Message) => { - const instanceId = selectedChat?.instanceId + // selectedChat no formato legado usa instance_name (não instanceId) + const instanceId = selectedChat?.instance_name ?? selectedChat?.instanceId if (!instanceId || !msg.id) return await mediaApi.redownload(instanceId, String(msg.id)) - }, [selectedChat?.instanceId]) + }, [selectedChat?.instance_name, selectedChat?.instanceId]) const mediaMessages = messages.filter(m => m.type === 'image' || m.type === 'video') const handleInternalScroll = useCallback(() => { diff --git a/clube67/newwhats.local/frontend/components/MessageBubble.tsx b/clube67/newwhats.local/frontend/components/MessageBubble.tsx index aa3ad57..a419f32 100644 --- a/clube67/newwhats.local/frontend/components/MessageBubble.tsx +++ b/clube67/newwhats.local/frontend/components/MessageBubble.tsx @@ -123,7 +123,15 @@ const AudioBubble: React.FC = ({ msg, fullMediaUrl, isOut, Tim )} - {/* Waveform + meta */} + {/* Speed — antes do waveform, alinhado ao centro vertical */} + + + {/* Waveform + tempo */}
{waveHeights.map((h, i) => ( @@ -137,17 +145,9 @@ const AudioBubble: React.FC = ({ msg, fullMediaUrl, isOut, Tim /> ))}
-
- - {currentTime > 0 ? formatTime(currentTime) : formatTime(duration)} - - -
+ + {currentTime > 0 ? formatTime(currentTime) : formatTime(duration)} +
{TimestampRow}