aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/js/comm/clipboard-reader.js19
1 files 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;