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)';
}