diff --git a/conversations.php b/conversations.php index 5e5f38f..b97116e 100644 --- a/conversations.php +++ b/conversations.php @@ -2441,7 +2441,14 @@ } } else if (!existingMedia && newMediaUrl) { // 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]'); } catch(e) { /* ignore */ } + 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)); + } + } catch(e) { /* ignore */ } } else if (existingMedia && !newMediaUrl) { // Media removed in new message: replace body with text/content try { body.innerHTML = window.escapeHtml(msg.content || '[Mensaje]'); } catch(e) { /* ignore */ } @@ -2476,9 +2483,19 @@ replyHtml = `
En respuesta a: ${window.escapeHtml(previewText)}
`; } const mediaPresent = (msg.local_thumb || msg.local_file || msg.media_url_external || msg.media_url); - const content = mediaPresent + let content = mediaPresent ? (window.renderMediaMessage ? window.renderMediaMessage(msg) : (window.formatMessageContent ? window.formatMessageContent(msg.content || '[Mensaje]') : window.escapeHtml(msg.content || '[Mensaje]'))) - : (window.formatMessageContent ? window.formatMessageContent(msg.content || '[Mensaje vacío]') : window.escapeHtml(msg.content || '[Mensaje vacío]')); + : (window.formatMessageContent ? window.formatMessageContent(msg.content || '') : window.escapeHtml(msg.content || '')); + + // If after formatting the content is empty (spaces or nothing), show a clearer placeholder + try { + const tmp = (content || '').replace(/<[^>]*>/g, '').trim(); // strip tags and check + if (!tmp) { + console.warn('Rendered message content empty, replacing with placeholder', mid, msg.id, msg.created_at); + content = '(Mensaje sin texto)'; + } + } catch (e) { /* ignore */ } + const time = msg.created_at ? new Date(msg.created_at).toLocaleTimeString('es-ES', { hour: '2-digit', minute: '2-digit' }) : ''; const statusIcon = this.getStatusIcon(msg.status); const reactionHtml = msg.reaction_emoji ? `
${msg.reaction_emoji}
` : '';