Commit 2426f9b7 authored by JC Brand's avatar JC Brand

Only attempt loading img URL with filename and appropriate extension

updates #1228
parent e425f257
......@@ -82094,13 +82094,24 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
*/
const __ = _converse.__;
const list = obj.textContent.match(URL_REGEX) || [];
return Promise.all(_.map(list, url => new Promise((resolve, reject) => isImage(url).then(function (img) {
return Promise.all(_.map(list, url => new Promise((resolve, reject) => {
const uri = new URI(url),
filename = uri.filename(),
lower_filename = filename.toLowerCase();
if (!_.includes(["https", "http"], uri.protocol().toLowerCase())) {
return resolve();
}
if (lower_filename.endsWith('jpg') || lower_filename.endsWith('jpeg') || lower_filename.endsWith('png') || lower_filename.endsWith('gif') || lower_filename.endsWith('svg')) {
return isImage(url).then(img => {
const i = new Image();
i.src = img.src;
i.addEventListener('load', resolve); // We also resolve for non-images, otherwise the
// Promise.all resolves prematurely.
i.addEventListener('error', resolve);
const __ = _converse.__;
_.each(sizzle(`a[href="${url}"]`, obj), a => {
a.outerHTML = tpl_image({
......@@ -82108,7 +82119,11 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
'label_download': __('Download')
});
});
}).catch(resolve))));
}).catch(resolve);
} else {
return resolve();
}
})));
};
u.renderFileURL = function (_converse, url) {
......@@ -288,8 +288,18 @@
const list = obj.textContent.match(URL_REGEX) || [];
return Promise.all(
_.map(list, (url) =>
new Promise((resolve, reject) =>
isImage(url).then(function (img) {
new Promise((resolve, reject) => {
const uri = new URI(url),
filename = uri.filename(),
lower_filename = filename.toLowerCase();
if (!_.includes(["https", "http"], uri.protocol().toLowerCase())) {
return resolve();
}
if (lower_filename.endsWith('jpg') || lower_filename.endsWith('jpeg') ||
lower_filename.endsWith('png') || lower_filename.endsWith('gif') ||
lower_filename.endsWith('svg')) {
return isImage(url).then(img => {
const i = new Image();
i.src = img.src;
i.addEventListener('load', resolve);
......@@ -297,6 +307,7 @@
// Promise.all resolves prematurely.
i.addEventListener('error', resolve);
const { __ } = _converse;
_.each(sizzle(`a[href="${url}"]`, obj), (a) => {
a.outerHTML= tpl_image({
'url': url,
......@@ -304,7 +315,10 @@
})
});
}).catch(resolve)
)
} else {
return resolve();
}
})
)
)
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment