diff --git a/js/views/identicon_svg_view.js b/js/views/identicon_svg_view.js index 60b51999dd..9933ca8acb 100644 --- a/js/views/identicon_svg_view.js +++ b/js/views/identicon_svg_view.js @@ -1,4 +1,4 @@ -// Copyright 2015-2020 Signal Messenger, LLC +// Copyright 2015-2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only /* global Whisper, loadImage */ @@ -21,7 +21,7 @@ const svg = new Blob([html], { type: 'image/svg+xml;charset=utf-8' }); return URL.createObjectURL(svg); }, - getDataUrl() { + getDataUrl() /* : Promise */ { const svgurl = this.getSVGUrl(); return new Promise(resolve => { const img = document.createElement('img'); @@ -36,6 +36,11 @@ URL.revokeObjectURL(svgurl); resolve(canvas.toDataURL('image/png')); }; + img.onerror = () => { + URL.revokeObjectURL(svgurl); + // If this fails for some reason, we'd rather continue on than reject. + resolve(undefined); + }; img.src = svgurl; }); diff --git a/ts/views/conversation_view.ts b/ts/views/conversation_view.ts index 046b5eeac9..b7466568cc 100644 --- a/ts/views/conversation_view.ts +++ b/ts/views/conversation_view.ts @@ -1805,7 +1805,6 @@ Whisper.ConversationView = Whisper.View.extend({ return new Promise((resolve, reject) => { const url = URL.createObjectURL(file); const img = document.createElement('img'); - img.onerror = reject; img.onload = () => { URL.revokeObjectURL(url); @@ -1863,6 +1862,16 @@ Whisper.ConversationView = Whisper.View.extend({ file: blob, }); }; + img.onerror = ( + _event: unknown, + _source: unknown, + _lineno: unknown, + _colno: unknown, + error: Error = new Error('Failed to load image for auto-scaling') + ) => { + URL.revokeObjectURL(url); + reject(error); + }; img.src = url; }); },