Update chat_window.php
This commit is contained in:
+28
-2
@@ -548,6 +548,24 @@ if (empty($user_id)) {
|
|||||||
function isValidMediaUrl(u) {
|
function isValidMediaUrl(u) {
|
||||||
return (typeof u === 'string') && u.trim() !== '' && u !== 'null' && u !== 'undefined';
|
return (typeof u === 'string') && u.trim() !== '' && u !== 'null' && u !== 'undefined';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Helper: mapear URLs externas a proxy seguro cuando sea necesario
|
||||||
|
function ensureProxyUrl(u, download = false) {
|
||||||
|
if (!isValidMediaUrl(u)) return '';
|
||||||
|
// Si ya es una URL interna o una ruta proxy, devolverla tal cual
|
||||||
|
if (u.startsWith('/') || u.indexOf('/api/version/media-url.php') === 0) return u;
|
||||||
|
try {
|
||||||
|
const parsed = new URL(u);
|
||||||
|
const host = parsed.host.toLowerCase();
|
||||||
|
// Si es Facebook lookaside / graph, preferir proxy para añadir Authorization
|
||||||
|
if (host.includes('lookaside.fbsbx.com') || host.includes('facebook.com') || host.includes('graph.facebook.com')) {
|
||||||
|
return `/api/version/media-url.php?url=${encodeURIComponent(u)}${download ? '&download=1' : ''}`;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// Si no es URL absoluta, devolver tal cual
|
||||||
|
}
|
||||||
|
return u;
|
||||||
|
}
|
||||||
|
|
||||||
// Cargar datos del usuario y mensajes
|
// Cargar datos del usuario y mensajes
|
||||||
async function loadUserData() {
|
async function loadUserData() {
|
||||||
@@ -711,7 +729,11 @@ if (empty($user_id)) {
|
|||||||
break;
|
break;
|
||||||
case 'video':
|
case 'video':
|
||||||
// Determinar mejor fuente de media
|
// Determinar mejor fuente de media
|
||||||
const mediaSrcVid = isValidMediaUrl(fullUrl) ? fullUrl : (isValidMediaUrl(thumbUrl) ? thumbUrl : (isValidMediaUrl(msg.media_url) ? msg.media_url : (isValidMediaUrl(msg.media_url_external) ? msg.media_url_external : '')));
|
let mediaSrcVid = isValidMediaUrl(fullUrl) ? fullUrl : (isValidMediaUrl(thumbUrl) ? thumbUrl : (isValidMediaUrl(msg.media_url) ? msg.media_url : (isValidMediaUrl(msg.media_url_external) ? msg.media_url_external : '')));
|
||||||
|
// Mapear a proxy si es necesario (Facebook/media protegida)
|
||||||
|
if (isValidMediaUrl(mediaSrcVid)) {
|
||||||
|
mediaSrcVid = ensureProxyUrl(mediaSrcVid);
|
||||||
|
}
|
||||||
console.debug('video media src:', mediaSrcVid, 'fullUrl:', fullUrl, 'thumbUrl:', thumbUrl, 'msg.media_url:', msg.media_url, 'msg.media_url_external:', msg.media_url_external);
|
console.debug('video media src:', mediaSrcVid, 'fullUrl:', fullUrl, 'thumbUrl:', thumbUrl, 'msg.media_url:', msg.media_url, 'msg.media_url_external:', msg.media_url_external);
|
||||||
if (isValidMediaUrl(mediaSrcVid)) {
|
if (isValidMediaUrl(mediaSrcVid)) {
|
||||||
contentHtml = `<video controls class="message-media-video">
|
contentHtml = `<video controls class="message-media-video">
|
||||||
@@ -724,7 +746,11 @@ if (empty($user_id)) {
|
|||||||
break;
|
break;
|
||||||
case 'audio':
|
case 'audio':
|
||||||
// Determinar mejor fuente de media para audio
|
// Determinar mejor fuente de media para audio
|
||||||
const mediaSrcAudio = isValidMediaUrl(fullUrl) ? fullUrl : (isValidMediaUrl(thumbUrl) ? thumbUrl : (isValidMediaUrl(msg.media_url) ? msg.media_url : (isValidMediaUrl(msg.media_url_external) ? msg.media_url_external : '')));
|
let mediaSrcAudio = isValidMediaUrl(fullUrl) ? fullUrl : (isValidMediaUrl(thumbUrl) ? thumbUrl : (isValidMediaUrl(msg.media_url) ? msg.media_url : (isValidMediaUrl(msg.media_url_external) ? msg.media_url_external : '')));
|
||||||
|
// Mapear a proxy si es necesario (Facebook/media protegida)
|
||||||
|
if (isValidMediaUrl(mediaSrcAudio)) {
|
||||||
|
mediaSrcAudio = ensureProxyUrl(mediaSrcAudio);
|
||||||
|
}
|
||||||
if (isValidMediaUrl(mediaSrcAudio)) {
|
if (isValidMediaUrl(mediaSrcAudio)) {
|
||||||
contentHtml = `<audio controls class="message-media-audio">
|
contentHtml = `<audio controls class="message-media-audio">
|
||||||
<source src="${escapeHtml(mediaSrcAudio)}" type="audio/webm">
|
<source src="${escapeHtml(mediaSrcAudio)}" type="audio/webm">
|
||||||
|
|||||||
Reference in New Issue
Block a user