From 7db1730dc8676487c7cdaa812570540a7a4aca7a Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Fri, 5 Aug 2022 19:23:18 +0200 Subject: [PATCH] Composer: Fix duplicated message for CJK languages (#1975) --- src/@types/global.d.ts | 4 ++++ src/components/middle/composer/MessageInput.tsx | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/@types/global.d.ts b/src/@types/global.d.ts index 5d7d5dedf..08d4abd8f 100644 --- a/src/@types/global.d.ts +++ b/src/@types/global.d.ts @@ -27,6 +27,10 @@ declare namespace React { offsetX: number; offsetY: number; } + + interface KeyboardEvent { + isComposing: boolean; + } } type AnyLiteral = Record; diff --git a/src/components/middle/composer/MessageInput.tsx b/src/components/middle/composer/MessageInput.tsx index 825f5f526..1c391c86f 100644 --- a/src/components/middle/composer/MessageInput.tsx +++ b/src/components/middle/composer/MessageInput.tsx @@ -248,7 +248,10 @@ const MessageInput: FC = ({ } function handleKeyDown(e: React.KeyboardEvent) { - if (!html.length && (e.metaKey || e.ctrlKey)) { + // https://levelup.gitconnected.com/javascript-events-handlers-keyboard-and-load-events-1b3e46a6b0c3#1960 + const { isComposing } = e; + + if (!isComposing && !html.length && (e.metaKey || e.ctrlKey)) { const targetIndexDelta = e.key === 'ArrowDown' ? 1 : e.key === 'ArrowUp' ? -1 : undefined; if (targetIndexDelta) { e.preventDefault(); @@ -258,7 +261,7 @@ const MessageInput: FC = ({ } } - if (e.key === 'Enter' && !e.shiftKey) { + if (!isComposing && e.key === 'Enter' && !e.shiftKey) { if ( !(IS_IOS || IS_ANDROID) && ( @@ -271,7 +274,7 @@ const MessageInput: FC = ({ closeTextFormatter(); onSend(); } - } else if (e.key === 'ArrowUp' && !html.length && !e.metaKey && !e.ctrlKey && !e.altKey) { + } else if (!isComposing && e.key === 'ArrowUp' && !html.length && !e.metaKey && !e.ctrlKey && !e.altKey) { e.preventDefault(); editLastMessage(); } else {