up
This commit is contained in:
@@ -37,6 +37,8 @@ function isValidMediaUrl(u) {
|
||||
function ensureProxyUrl(u, download = false) {
|
||||
if (!isValidMediaUrl(u)) return '';
|
||||
if (u.startsWith('/') || u.indexOf('/api/version/media-url.php') === 0) return u;
|
||||
// Si empieza con api/ agregar / al inicio
|
||||
if (u.startsWith('api/')) return '/' + u;
|
||||
try {
|
||||
const parsed = new URL(u);
|
||||
const host = parsed.host.toLowerCase();
|
||||
@@ -84,7 +86,8 @@ function renderMediaMessage(msg) {
|
||||
// Full URL for opening (prefer local file then external with id or url)
|
||||
let fullUrl = '';
|
||||
if (isValidMediaUrl(localFile)) {
|
||||
fullUrl = `/api/version/media-url.php?local=${encodeURIComponent(localFile)}`;
|
||||
// Usar archivo local directamente sin proxy
|
||||
fullUrl = localFile.startsWith('/') ? localFile : `/${localFile}`;
|
||||
} else if (isValidMediaUrl(mediaExternal)) {
|
||||
let mid = '';
|
||||
if (mediaExternal.indexOf('api/get_media.php?id=') !== -1) {
|
||||
@@ -108,16 +111,28 @@ function renderMediaMessage(msg) {
|
||||
return `<div class="text-muted"><em>Imagen no disponible</em></div>`;
|
||||
}
|
||||
case 'video': {
|
||||
const src = ensureProxyUrl(effective || msg.media_url || '');
|
||||
// Priorizar local_file sobre otras fuentes
|
||||
let src = '';
|
||||
if (isValidMediaUrl(localFile)) {
|
||||
src = localFile.startsWith('/') ? localFile : `/${localFile}`;
|
||||
} else {
|
||||
src = ensureProxyUrl(effective || msg.media_url || '');
|
||||
}
|
||||
if (src) return `<div class="message-media"><video controls><source src="${escapeHtml(src)}" type="video/mp4">Tu navegador no soporta video.</video></div>${content?`<div>${escapeHtml(content)}</div>`:''}`;
|
||||
return `<div class="text-muted"><em>Video no disponible</em></div>`;
|
||||
}
|
||||
case 'audio': {
|
||||
const src = ensureProxyUrl(effective || msg.media_url || '');
|
||||
// Priorizar local_file sobre otras fuentes
|
||||
let src = '';
|
||||
if (isValidMediaUrl(localFile)) {
|
||||
src = localFile.startsWith('/') ? localFile : `/${localFile}`;
|
||||
} else {
|
||||
src = ensureProxyUrl(effective || msg.media_url || '');
|
||||
}
|
||||
if (!src) return `<div class="text-muted"><em>Audio no disponible</em></div>`;
|
||||
// build download link when possible (api/get_media.php?id=... or direct url or local file)
|
||||
let audioDownload = null;
|
||||
const candidate = isValidMediaUrl(effective) ? effective : (isValidMediaUrl(msg.media_url) ? msg.media_url : (isValidMediaUrl(localFile) ? localFile : null));
|
||||
const candidate = isValidMediaUrl(localFile) ? localFile : (isValidMediaUrl(effective) ? effective : (isValidMediaUrl(msg.media_url) ? msg.media_url : null));
|
||||
if (candidate && candidate.indexOf && candidate.indexOf('api/get_media.php?id=') !== -1) {
|
||||
const parts = candidate.split('id=');
|
||||
const mid = parts[1] ? parts[1] : '';
|
||||
@@ -125,7 +140,8 @@ function renderMediaMessage(msg) {
|
||||
} else if (candidate && /^https?:\/\//i.test(candidate)) {
|
||||
audioDownload = `/api/version/media-url.php?url=${encodeURIComponent(candidate)}&download=1`;
|
||||
} else if (candidate && candidate === localFile) {
|
||||
audioDownload = `/api/version/media-url.php?local=${encodeURIComponent(candidate)}&download=1`;
|
||||
// Usar archivo local directamente sin proxy
|
||||
audioDownload = localFile.startsWith('/') ? localFile : `/${localFile}`;
|
||||
}
|
||||
|
||||
let html = `<div class="message-media"><audio controls><source src="${escapeHtml(src)}" type="audio/mpeg">Tu navegador no soporta audio.</audio></div>`;
|
||||
@@ -143,7 +159,8 @@ function renderMediaMessage(msg) {
|
||||
} else if (isValidMediaUrl(mediaExternal) && /^https?:\/\//i.test(mediaExternal)) {
|
||||
docUrl = `/api/version/media-url.php?url=${encodeURIComponent(mediaExternal)}&download=1`;
|
||||
} else if (isValidMediaUrl(localFile)) {
|
||||
docUrl = `/api/version/media-url.php?local=${encodeURIComponent(localFile)}&download=1`;
|
||||
// Usar archivo local directamente sin proxy
|
||||
docUrl = localFile.startsWith('/') ? localFile : `/${localFile}`;
|
||||
}
|
||||
if (docUrl) return `<a href="${docUrl}" class="message-document" target="_blank" rel="noopener noreferrer"><i class="fas fa-file-pdf"></i><span>${escapeHtml(filename)}</span></a>`;
|
||||
return `<div class="message-document" style="opacity:0.6;"><i class="fas fa-file-pdf"></i><span>${escapeHtml(filename)} (No disponible)</span></div>`;
|
||||
|
||||
Reference in New Issue
Block a user