From f5fede675fb3251d8dd3019d1131aa59009fa331 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Sun, 25 Jan 2026 20:55:32 -0500 Subject: [PATCH] Update conversations.php --- conversations.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/conversations.php b/conversations.php index 77450dd..73d9233 100644 --- a/conversations.php +++ b/conversations.php @@ -2484,11 +2484,14 @@ // No existing media element, render new media block without touching other parts try { body.innerHTML = window.renderMediaMessage ? window.renderMediaMessage(msg) : window.escapeHtml(msg.content || '[Mensaje]'); - // If after inserting media/text the body appears empty, replace with placeholder - if ((body.textContent || '').trim() === '') { - body.innerHTML = '(Mensaje sin texto)'; - console.warn('Post-update: media/text produced empty body, set placeholder for', msg && (msg.id || msg.message_id)); - } + // If after inserting media/text the body appears empty and there's no media element, replace with placeholder + try { + const hasMediaNode = !!body.querySelector && !!body.querySelector('img,video,audio,source,.message-media'); + if ((body.textContent || '').trim() === '' && !hasMediaNode) { + body.innerHTML = '(Mensaje sin texto)'; + console.warn('Post-update: media/text produced empty body, set placeholder for', msg && (msg.id || msg.message_id)); + } + } catch (e) { /* ignore DOM query errors */ } } catch(e) { /* ignore */ } } else if (existingMedia && !newMediaUrl) { // Media removed in new message: replace body with text/content @@ -2528,10 +2531,12 @@ ? (window.renderMediaMessage ? window.renderMediaMessage(msg) : (window.formatMessageContent ? window.formatMessageContent(msg.content || '[Mensaje]') : window.escapeHtml(msg.content || '[Mensaje]'))) : (window.formatMessageContent ? window.formatMessageContent(msg.content || '') : window.escapeHtml(msg.content || '')); - // If after formatting the content is empty (spaces or nothing), show a clearer placeholder + // If after formatting the content is empty (spaces or nothing), show a clearer placeholder. + // But allow pure media-only content (images/audio/video) to render instead of being treated as empty. try { const tmp = (content || '').replace(/<[^>]*>/g, '').trim(); // strip tags and check - if (!tmp) { + const hasMediaTag = /<(img|audio|video|source|a[^>]*download|div\s+class=["']?message-media)/i.test(content || ''); + if (!tmp && !hasMediaTag) { console.warn('Rendered message content empty, replacing with placeholder', mid, msg.id, msg.created_at); content = '(Mensaje sin texto)'; }