From 1375cac387ddb125523a659499bc9bc51965a7cd Mon Sep 17 00:00:00 2001 From: Michal Junek Date: Fri, 4 Feb 2022 13:41:20 +0100 Subject: [stable23] Render data URL images as-is Signed-off-by: Michal Junek --- src/nodes/ImageView.vue | 5 ++++- src/tests/nodes/ImageView.spec.js | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/nodes/ImageView.vue b/src/nodes/ImageView.vue index df8f58b60..d788d9bb8 100644 --- a/src/nodes/ImageView.vue +++ b/src/nodes/ImageView.vue @@ -116,7 +116,7 @@ export default { } }, imageUrl() { - if (this.isRemoteUrl || this.isPreviewUrl) { + if (this.isRemoteUrl || this.isPreviewUrl || this.isDataUrl) { return this.src } if (this.hasPreview && this.mime !== 'image/gif') { @@ -132,6 +132,9 @@ export default { return this.src.match(/^(\/index.php)?\/core\/preview/) || this.src.match(/^(\/index.php)?\/apps\/files_sharing\/publicpreview\//) }, + isDataUrl() { + return this.src.startsWith('data:') + }, basename() { return decodeURI(this.src.split('?')[0]) }, diff --git a/src/tests/nodes/ImageView.spec.js b/src/tests/nodes/ImageView.spec.js index 13a0b2456..51a8e0747 100644 --- a/src/tests/nodes/ImageView.spec.js +++ b/src/tests/nodes/ImageView.spec.js @@ -64,4 +64,10 @@ describe('Image View src attribute based on markdown', () => { expect(wrapper.find('.image__main').attributes('src')) .toBe('https://nextcloud/index.php/apps/files_sharing/publicpreview/CSYoWifBzrsMWeA?file=/deck11-calendar.png&x=1760&y=990&a=true') }) + + test('data urls are used as is', () => { + const src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=' + const wrapper = factory({src}) + expect(wrapper.find('.image__main').attributes('src')).toBe(src) + }) }) -- cgit v1.2.3 From 67788c856904bb8009a041d652bac09aa4664e04 Mon Sep 17 00:00:00 2001 From: Michal Junek Date: Fri, 4 Feb 2022 13:43:25 +0100 Subject: [stable23] Prevents race condition when loading images Signed-off-by: Michal Junek --- src/nodes/ImageView.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/nodes/ImageView.vue b/src/nodes/ImageView.vue index d788d9bb8..f39fb80ae 100644 --- a/src/nodes/ImageView.vue +++ b/src/nodes/ImageView.vue @@ -221,7 +221,6 @@ export default { return } const img = new Image() - img.src = this.imageUrl img.onload = () => { this.imageLoaded = true } @@ -230,6 +229,7 @@ export default { this.imageLoaded = false this.loaded = true } + img.src = this.imageUrl }, methods: { updateAlt() { -- cgit v1.2.3