Composer: Fix duplicated message for CJK languages (#1975)

This commit is contained in:
Alexander Zinchuk 2022-08-05 19:23:18 +02:00
parent a2c37ca00c
commit 7db1730dc8
2 changed files with 10 additions and 3 deletions

View File

@ -27,6 +27,10 @@ declare namespace React {
offsetX: number; offsetX: number;
offsetY: number; offsetY: number;
} }
interface KeyboardEvent {
isComposing: boolean;
}
} }
type AnyLiteral = Record<string, any>; type AnyLiteral = Record<string, any>;

View File

@ -248,7 +248,10 @@ const MessageInput: FC<OwnProps & StateProps> = ({
} }
function handleKeyDown(e: React.KeyboardEvent<HTMLDivElement>) { function handleKeyDown(e: React.KeyboardEvent<HTMLDivElement>) {
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; const targetIndexDelta = e.key === 'ArrowDown' ? 1 : e.key === 'ArrowUp' ? -1 : undefined;
if (targetIndexDelta) { if (targetIndexDelta) {
e.preventDefault(); e.preventDefault();
@ -258,7 +261,7 @@ const MessageInput: FC<OwnProps & StateProps> = ({
} }
} }
if (e.key === 'Enter' && !e.shiftKey) { if (!isComposing && e.key === 'Enter' && !e.shiftKey) {
if ( if (
!(IS_IOS || IS_ANDROID) !(IS_IOS || IS_ANDROID)
&& ( && (
@ -271,7 +274,7 @@ const MessageInput: FC<OwnProps & StateProps> = ({
closeTextFormatter(); closeTextFormatter();
onSend(); 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(); e.preventDefault();
editLastMessage(); editLastMessage();
} else { } else {