Просмотр исходного кода

Merge pull request #14673 from overleaf/jdt-improve-character-selection-chat

Jdt improve character selection chat

GitOrigin-RevId: 9d9f22aeda5e333e807b710f8ea14bbd47dc7f0c
Jimmy Domagala-Tang 3 лет назад
Родитель
Сommit
7a7689e9c5
1 измененных файлов с 14 добавлено и 7 удалено
  1. 14 7
      services/web/frontend/js/features/chat/components/message-input.tsx

+ 14 - 7
services/web/frontend/js/features/chat/components/message-input.js → services/web/frontend/js/features/chat/components/message-input.tsx

@@ -1,19 +1,26 @@
 import PropTypes from 'prop-types'
 import { useTranslation } from 'react-i18next'
 
-function MessageInput({ resetUnreadMessages, sendMessage }) {
+type MessageInputProps = {
+  resetUnreadMessages: () => void
+  sendMessage: (message: string) => void
+}
+
+function MessageInput({ resetUnreadMessages, sendMessage }: MessageInputProps) {
   const { t } = useTranslation()
 
-  function handleKeyDown(event) {
-    if (event.key === 'Enter') {
+  function handleKeyDown(event: React.KeyboardEvent) {
+    const selectingCharacter = event.nativeEvent.isComposing
+    if (event.key === 'Enter' && !selectingCharacter) {
       event.preventDefault()
-      sendMessage(event.target.value)
+      const target = event.target as HTMLInputElement
+      sendMessage(target.value)
       // wrap the form reset in setTimeout so input sources have time to finish
       // https://github.com/overleaf/internal/pull/9206
       window.setTimeout(() => {
-        event.target.blur()
-        event.target.closest('form').reset()
-        event.target.focus()
+        target.blur()
+        target.closest('form')?.reset()
+        target.focus()
       }, 0)
     }
   }