diff --git a/assets/js/chat-common.js b/assets/js/chat-common.js
index ddc13e8..804adb8 100644
--- a/assets/js/chat-common.js
+++ b/assets/js/chat-common.js
@@ -59,11 +59,52 @@ function renderMediaMessage(msg) {
switch (mediaType) {
case 'image': {
- const thumb = effective || '';
- const full = isValidMediaUrl(localFile) ? `/api/version/media-url.php?local=${encodeURIComponent(localFile)}` : (isValidMediaUrl(mediaExternal) ? `/api/version/media-url.php?url=${encodeURIComponent(mediaExternal)}` : (msg.media_url || ''));
- if (thumb) {
- return `
${content?`${escapeHtml(content)}
`:''}`;
+ // Compute thumbnail and full image URL following chat_window heuristics
+ let thumbUrl = '';
+ if (isValidMediaUrl(localThumb)) {
+ thumbUrl = `/${localThumb}`;
+ } else if (isValidMediaUrl(localFile)) {
+ thumbUrl = `/${localFile}`;
+ } else if (isValidMediaUrl(effective) || isValidMediaUrl(mediaExternal)) {
+ const external = isValidMediaUrl(effective) ? effective : mediaExternal;
+ if (/lookaside\.fbsbx\.com|graph\.facebook\.com|facebook\.com/i.test(external)) {
+ const m = external.match(/[?&]mid=([^&]+)/i);
+ if (m && m[1]) {
+ thumbUrl = `/api/version/media-url.php?id=${encodeURIComponent(m[1])}`;
+ } else {
+ thumbUrl = `/api/version/media-url.php?url=${encodeURIComponent(external)}`;
+ }
+ } else {
+ thumbUrl = external;
+ }
+ } else if (isValidMediaUrl(msg.media_url)) {
+ thumbUrl = msg.media_url;
}
+
+ // 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)}`;
+ } else if (isValidMediaUrl(mediaExternal)) {
+ let mid = '';
+ if (mediaExternal.indexOf('api/get_media.php?id=') !== -1) {
+ const parts = mediaExternal.split('id='); mid = parts[1] ? decodeURIComponent(parts[1]) : '';
+ } else {
+ const m = mediaExternal.match(/[?&]mid=([^&]+)/i); if (m && m[1]) mid = decodeURIComponent(m[1]);
+ }
+ if (mid) fullUrl = `/api/version/media-url.php?id=${encodeURIComponent(mid)}`;
+ else if (/^https?:\/\//i.test(mediaExternal)) fullUrl = `/api/version/media-url.php?url=${encodeURIComponent(mediaExternal)}`;
+ else fullUrl = `/api/version/media-url.php?url=${encodeURIComponent(mediaExternal)}`;
+ } else {
+ fullUrl = '';
+ }
+
+ if (isValidMediaUrl(fullUrl)) {
+ return `${content?`${escapeHtml(content)}
`:''}`;
+ } else if (isValidMediaUrl(thumbUrl)) {
+ return `${content?`${escapeHtml(content)}
`:''}`;
+ }
+
return `Imagen no disponible
`;
}
case 'video': {