From 358a47550c05ab0772674af56cd1e18bd82cca31 Mon Sep 17 00:00:00 2001 From: Rafael Lopes Date: Thu, 23 Jul 2026 11:26:49 -0300 Subject: [PATCH] =?UTF-8?q?FIX:=20Corrige=20duplica=C3=A7=C3=A3o=20de=20m?= =?UTF-8?q?=C3=ADdia=20e=20exibi=C3=A7=C3=A3o=20de=20nome=20de=20arquivo?= =?UTF-8?q?=20(Bug=201=20e=203)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Alinha text do optimistic message com o retorno do backend (filename ou [mediaType]) para evitar duplicação ao enviar mídia sem legenda - Adiciona mediaFilename ao normalizeMessage (Socket.IO e REST API) - MediaRenderer usa mediaFilename e message.text como fallback para nome do arquivo --- src/modules/chat/components/ChatWindow.jsx | 2 +- src/modules/chat/hooks/useChat.js | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/chat/components/ChatWindow.jsx b/src/modules/chat/components/ChatWindow.jsx index dbd26c7..7bf7c0d 100644 --- a/src/modules/chat/components/ChatWindow.jsx +++ b/src/modules/chat/components/ChatWindow.jsx @@ -94,7 +94,7 @@ function DateSeparator({ label }) { 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'; + const filename = message.mediaFilename || message.media?.filename || message.text || 'arquivo'; if (!message.hasMedia && !mediaUrl) return null; diff --git a/src/modules/chat/hooks/useChat.js b/src/modules/chat/hooks/useChat.js index c77e41d..28c3dfe 100644 --- a/src/modules/chat/hooks/useChat.js +++ b/src/modules/chat/hooks/useChat.js @@ -99,6 +99,7 @@ function normalizeMessage(message) { 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; + const mediaFilename = message.mediaFilename || message.media_filename || message.media?.filename || null; return { id, chatId: message.from || message.to || message.chatId, @@ -109,6 +110,7 @@ function normalizeMessage(message) { media: message.media || null, mediaUrl, mediaMimeType, + mediaFilename, mediaLoading: false, mediaError: null, }; @@ -754,11 +756,12 @@ export function useChat() { } const fileToSend = attachedFile || null; + const optimisticText = trimmed || (fileToSend ? (fileToSend.name || '[mídia]') : ''); const newMessage = { id: `temp-${Date.now()}`, chatId: contactId, sender: 'agent', - text: trimmed, + text: optimisticText, timestamp: Math.floor(Date.now() / 1000), hasMedia: Boolean(fileToSend), mediaUrl: fileToSend?.previewUrl || null, -- 2.43.0