diff --git a/chat_window.php b/chat_window.php index d83e128..8ec4a2c 100644 --- a/chat_window.php +++ b/chat_window.php @@ -612,11 +612,10 @@ if (empty($user_id)) { thumbUrl = `/${msg.local_thumb}`; } else if (isValidMediaUrl(msg.local_file)) { thumbUrl = `/${msg.local_file}`; - } else if (isValidMediaUrl(msg.media_url_external)) { - // Si es una URL externa de Facebook/lookaside, usar el proxy para incluir Authorization - const external = msg.media_url_external; + } else if (isValidMediaUrl(msg.effective_media) || isValidMediaUrl(msg.media_url_external)) { + // Priorizar effective_media si existe; usar proxy para Facebook/lookaside + const external = isValidMediaUrl(msg.effective_media) ? msg.effective_media : msg.media_url_external; if (/lookaside\.fbsbx\.com|graph\.facebook\.com|facebook\.com/i.test(external)) { - // Intentar extraer mid del query string para usar ?id= const midMatch = external.match(/[?&]mid=([^&]+)/i); if (midMatch && midMatch[1]) { const mid = decodeURIComponent(midMatch[1]); @@ -693,8 +692,8 @@ if (empty($user_id)) { case 'document': const filename = msg.filename || msg.content || 'Documento'; const fileIcon = getFileIcon(filename); - // Construir URL de descarga usando media_url_external o archivo local (validar fuentes) - let docSource = isValidMediaUrl(msg.media_url_external) ? msg.media_url_external : (isValidMediaUrl(msg.local_file) ? msg.local_file : null); + // Construir URL de descarga usando effective_media o archivo local (validar fuentes) + let docSource = isValidMediaUrl(msg.effective_media) ? msg.effective_media : (isValidMediaUrl(msg.media_url_external) ? msg.media_url_external : (isValidMediaUrl(msg.local_file) ? msg.local_file : null)); let docUrl = null; if (docSource && docSource.indexOf && docSource.indexOf('api/get_media.php?id=') !== -1) { const parts = docSource.split('id=');