From aa25d09b0c2771535de840ac5b112e20b11d76a9 Mon Sep 17 00:00:00 2001 From: balibabu Date: Wed, 2 Apr 2025 15:02:16 +0800 Subject: [PATCH] Fix: Using the Enter key does not send a complete message #6754 (#6755) ### What problem does this PR solve? Fix: Using the Enter key does not send a complete message #6754 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- web/src/components/message-input/index.tsx | 33 +++++++------------ web/src/pages/chat/markdown-content/index.tsx | 19 +++++------ web/src/pages/chat/utils.ts | 2 +- 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/web/src/components/message-input/index.tsx b/web/src/components/message-input/index.tsx index a22efd790..529ce73e3 100644 --- a/web/src/components/message-input/index.tsx +++ b/web/src/components/message-input/index.tsx @@ -11,8 +11,6 @@ import { CloseCircleOutlined, InfoCircleOutlined, LoadingOutlined, - PaperClipOutlined, - SendOutlined, } from '@ant-design/icons'; import type { GetProp, UploadFile } from 'antd'; import { @@ -29,7 +27,7 @@ import { UploadProps, } from 'antd'; import get from 'lodash/get'; -import { CircleStop } from 'lucide-react'; +import { CircleStop, Paperclip, SendHorizontal } from 'lucide-react'; import { ChangeEventHandler, memo, @@ -153,6 +151,14 @@ const MessageInput = ({ const isUploadingFile = fileList.some((x) => x.status === 'uploading'); + const handlePressEnter = useCallback(async () => { + if (isUploadingFile) return; + const ids = getFileIds(fileList.filter((x) => isUploadSuccess(x))); + + onPressEnter(ids); + setFileList([]); + }, [fileList, onPressEnter, isUploadingFile]); + const handleKeyDown = useCallback( async (event: React.KeyboardEvent) => { // check if it was shift + enter @@ -166,19 +172,6 @@ const MessageInput = ({ [sendDisabled, isUploadingFile, sendLoading, handlePressEnter], ); - const handlePressEnter = useCallback(async () => { - if (isUploadingFile) return; - const ids = getFileIds(fileList.filter((x) => isUploadSuccess(x))); - - onPressEnter(ids); - setFileList([]); - }, [fileList, onPressEnter, isUploadingFile]); - - const [isComposing, setIsComposing] = useState(false); - - const handleCompositionStart = () => setIsComposing(true); - const handleCompositionEnd = () => setIsComposing(false); - const handleRemove = useCallback( async (file: UploadFile) => { const ids = get(file, 'response.data', []); @@ -245,8 +238,6 @@ const MessageInput = ({ autoSize={{ minRows: 2, maxRows: 10 }} onKeyDown={handleKeyDown} onChange={onInputChange} - onCompositionStart={handleCompositionStart} - onCompositionEnd={handleCompositionEnd} /> @@ -349,13 +340,13 @@ const MessageInput = ({ }} > )} {sendLoading ? ( ) : ( )} diff --git a/web/src/pages/chat/markdown-content/index.tsx b/web/src/pages/chat/markdown-content/index.tsx index a28acad52..0a83fb97d 100644 --- a/web/src/pages/chat/markdown-content/index.tsx +++ b/web/src/pages/chat/markdown-content/index.tsx @@ -3,7 +3,7 @@ import SvgIcon from '@/components/svg-icon'; import { IReference, IReferenceChunk } from '@/interfaces/database/chat'; import { getExtension } from '@/utils/document-util'; import { InfoCircleOutlined } from '@ant-design/icons'; -import { Button, Flex, Popover, Space } from 'antd'; +import { Button, Flex, Popover } from 'antd'; import DOMPurify from 'dompurify'; import { useCallback, useEffect, useMemo } from 'react'; import Markdown from 'react-markdown'; @@ -23,6 +23,7 @@ import 'katex/dist/katex.min.css'; // `rehype-katex` does not import the CSS for import { preprocessLaTeX, replaceThinkToSection } from '@/utils/chat'; import { replaceTextByOldReg } from '../utils'; +import classNames from 'classnames'; import { pipe } from 'lodash/fp'; import styles from './index.less'; @@ -108,11 +109,7 @@ const MarkdownContent = ({ const fileExtension = documentId ? getExtension(document?.doc_name) : ''; const imageId = chunkItem?.image_id; return ( - +
{imageId && ( )} - +
{documentId && ( @@ -152,7 +149,7 @@ const MarkdownContent = ({ )}
+
); }, [reference, fileThumbnails, handleDocumentButtonClick], diff --git a/web/src/pages/chat/utils.ts b/web/src/pages/chat/utils.ts index 53887c798..1a404eadb 100644 --- a/web/src/pages/chat/utils.ts +++ b/web/src/pages/chat/utils.ts @@ -46,7 +46,7 @@ const oldReg = /(#{2}\d+\${2})/g; // To be compatible with the old index matching mode export const replaceTextByOldReg = (text: string) => { - return text.replace(oldReg, function (substring) { + return text?.replace(oldReg, function (substring) { return `~~${substring.slice(2, -2)}==`; }); };