From 59ae55252e69f844ab914c1eb516ac851f08ac89 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Sun, 13 Mar 2022 21:17:48 -0400 Subject: [PATCH] Update ClipboardReader.getImage implementation (#2085) --- ext/js/comm/clipboard-reader.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/ext/js/comm/clipboard-reader.js b/ext/js/comm/clipboard-reader.js index c7283e55..7a4744ca 100644 --- a/ext/js/comm/clipboard-reader.js +++ b/ext/js/comm/clipboard-reader.js @@ -113,17 +113,24 @@ class ClipboardReader { typeof navigator.clipboard !== 'undefined' && typeof navigator.clipboard.read === 'function' ) { - // This function is behind the Firefox flag: dom.events.asyncClipboard.dataTransfer - let files; + // This function is behind the Firefox flag: dom.events.asyncClipboard.read + // See: https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/read#browser_compatibility + let items; try { - ({files} = await navigator.clipboard.read()); + items = await navigator.clipboard.read(); } catch (e) { return null; } - for (const file of files) { - if (MediaUtil.getFileExtensionFromImageMediaType(file.type) !== null) { - return await this._readFileAsDataURL(file); + for (const item of items) { + for (const type of item.types) { + if (!MediaUtil.getFileExtensionFromImageMediaType(type)) { continue; } + try { + const blob = await item.getType(type); + return await this._readFileAsDataURL(blob); + } catch (e) { + // NOP + } } } return null;