This commit is contained in:
Lizandro Guarnizo
2026-02-20 11:21:06 -05:00
parent c9ec58979e
commit 602e6d3724
11 changed files with 130 additions and 30 deletions
+24 -3
View File
@@ -5704,9 +5704,9 @@ if (!isset($_SESSION['user_id'])) {
console.log('🔄 Usando media_url_external (URL absoluta):', full);
} else if (mediaUrl && /^\d+$/.test(mediaUrl)) {
// 📱 PRIORIDAD 4: Es un ID de WhatsApp (solo números) - usar URL absoluta
full = `${baseUrl}/api/get_media.php?id=${encodeURIComponent(mediaUrl)}`;
full = `${baseUrl}/api/version/media-url.php?id=${encodeURIComponent(mediaUrl)}`;
thumb = full;
console.log('📱 Usando whatsapp_media_id con get_media.php:', mediaUrl);
console.log('📱 Usando whatsapp_media_id con media-url.php:', mediaUrl);
} else if (mediaUrl && /^https?:\/\//i.test(mediaUrl)) {
// 🌐 PRIORIDAD 5: URL externa directa (puede estar caducada)
full = mediaUrl;
@@ -5719,12 +5719,33 @@ if (!isset($_SESSION['user_id'])) {
thumb = '';
}
// Si no hay URL de media, mostrar placeholder con botón de descarga
if (!full && mediaType !== 'text') {
const retryUrl = mediaUrl && /^\d+$/.test(mediaUrl)
? `${baseUrl}/api/version/media-url.php?id=${encodeURIComponent(mediaUrl)}`
: (mediaUrlExternal ? `${baseUrl}/${mediaUrlExternal.replace(/^\//, '')}` : '');
const retryBtn = retryUrl
? `<a href="${escapeHtml(retryUrl)}" target="_blank" class="btn btn-sm btn-outline-success mt-1" onclick="event.stopPropagation(); setTimeout(()=>location.reload(), 3000);"><i class="fas fa-download"></i> Descargar ahora</a>`
: '';
const iconMap = {image: 'fa-image', video: 'fa-video', audio: 'fa-microphone', document: 'fa-file', sticker: 'fa-sticky-note'};
const icon = iconMap[mediaType] || 'fa-file';
return `
<div class="message-media" style="background:rgba(0,0,0,0.04); border-radius:8px; padding:12px; text-align:center; min-width:180px;">
<i class="fas ${icon}" style="font-size:28px; color:#999; margin-bottom:6px;"></i>
<div style="font-size:12px; color:#888;">Descargando ${escapeHtml(mediaType)}...</div>
<div style="font-size:11px; color:#aaa; margin-top:2px;">En cola de descarga</div>
${retryBtn}
</div>
${caption ? `<div>${escapeHtml(caption)}</div>` : ''}
`;
}
switch (mediaType) {
case 'image':
return `
<div class="message-media">
<a href="#" data-full="${escapeHtml(full)}" data-type="image" data-caption="${escapeHtml(caption)}" onclick="openMediaLightbox(this.dataset.full, this.dataset.type, this.dataset.caption); return false;" title="Abrir imagen">
<img src="${escapeHtml(thumb)}" alt="Imagen" style="cursor:zoom-in">
<img src="${escapeHtml(thumb)}" alt="Imagen" style="cursor:zoom-in" onerror="this.parentElement.parentElement.innerHTML='<div style=\\'padding:12px;text-align:center;background:rgba(0,0,0,0.04);border-radius:8px;\\'><i class=\\'fas fa-image\\' style=\\'font-size:28px;color:#ccc;\\'></i><div style=\\'font-size:12px;color:#999;margin-top:4px;\\'>Imagen no disponible</div><a href=\\'${escapeHtml(full)}\\' target=\\'_blank\\' class=\\'btn btn-sm btn-outline-primary mt-1\\'><i class=\\'fas fa-download\\'></i> Reintentar</a></div>'">
</a>
</div>
${caption ? `<div>${escapeHtml(caption)}</div>` : ''}