From 54d6b581daf8a799f9ff581f15f0313084cd7dd9 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Thu, 30 Sep 2021 14:02:57 +0300 Subject: [PATCH] Composer: Fix several pasting bugs on Firefox (#1478) --- src/components/middle/composer/hooks/useClipboardPaste.ts | 4 ++-- src/util/imageResize.ts | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/middle/composer/hooks/useClipboardPaste.ts b/src/components/middle/composer/hooks/useClipboardPaste.ts index 4c3ded6e8..4a2823d6b 100644 --- a/src/components/middle/composer/hooks/useClipboardPaste.ts +++ b/src/components/middle/composer/hooks/useClipboardPaste.ts @@ -29,12 +29,12 @@ export default ( const file = media && media.getAsFile(); const pastedText = e.clipboardData.getData('text').substring(0, MAX_MESSAGE_LENGTH); + e.preventDefault(); + if (!file && !pastedText) { return; } - e.preventDefault(); - if (file && !editedMessage) { const attachment = await buildAttachment(file.name, file, true); setAttachments((attachments) => [ diff --git a/src/util/imageResize.ts b/src/util/imageResize.ts index 6aea9197b..e9a6bfedb 100644 --- a/src/util/imageResize.ts +++ b/src/util/imageResize.ts @@ -44,6 +44,9 @@ async function scale( try { const bitmap = await window.createImageBitmap(img, { resizeWidth: width, resizeHeight: height, resizeQuality: 'high' }); + if (bitmap.height !== height || bitmap.width !== width) { + throw new Error('Image bitmap resize not supported!'); // FF93 added support for options, but not resize + } return await new Promise((res) => { const canvas = document.createElement('canvas'); canvas.width = bitmap.width; @@ -58,10 +61,10 @@ async function scale( }); } catch (e) { // Fallback. Firefox below 93 does not recognize `createImageBitmap` with 2 parameters - return steppedScale(img, width, height, 0.5, outputType); + return steppedScale(img, width, height, undefined, outputType); } } else { - return steppedScale(img, width, height, 0.5, outputType); + return steppedScale(img, width, height, undefined, outputType); } }