From fb201731947b267b1fbd5a635810acb837ea8202 Mon Sep 17 00:00:00 2001 From: KazooTTT Date: Thu, 4 Dec 2025 14:44:52 +0800 Subject: [PATCH] fix(inputbar): block enter send while generating (#11672) * fix(inputbar): block enter send while generating - reuse unified send disable state for keyboard and button - prevent enter sending when loading or searching * refactor: optimize InputbarCore component's useHotkeys hook Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * refactor(InputbarCore): rename cannotSend to noContent for clarity --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../home/Inputbar/components/InputbarCore.tsx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/renderer/src/pages/home/Inputbar/components/InputbarCore.tsx b/src/renderer/src/pages/home/Inputbar/components/InputbarCore.tsx index b55ca93cd3..99a93e537c 100644 --- a/src/renderer/src/pages/home/Inputbar/components/InputbarCore.tsx +++ b/src/renderer/src/pages/home/Inputbar/components/InputbarCore.tsx @@ -181,8 +181,10 @@ export const InputbarCore: FC = ({ enabled: config.enableDragDrop, t }) - // 判断是否可以发送:文本不为空或有文件 - const cannotSend = isEmpty && files.length === 0 + // 判断是否有内容:文本不为空或有文件 + const noContent = isEmpty && files.length === 0 + // 发送入口统一禁用条件:空内容、正在生成、全局搜索态 + const isSendDisabled = noContent || isLoading || searching useEffect(() => { setExtensions(supportedExts) @@ -313,7 +315,7 @@ export const InputbarCore: FC = ({ const isEnterPressed = event.key === 'Enter' && !event.nativeEvent.isComposing if (isEnterPressed) { - if (isSendMessageKeyPressed(event, sendMessageShortcut) && !cannotSend) { + if (isSendMessageKeyPressed(event, sendMessageShortcut) && !isSendDisabled) { handleSendMessage() event.preventDefault() return @@ -359,7 +361,7 @@ export const InputbarCore: FC = ({ translate, handleToggleExpanded, sendMessageShortcut, - cannotSend, + isSendDisabled, handleSendMessage, setText, setTimeoutTimer, @@ -620,7 +622,7 @@ export const InputbarCore: FC = ({ const rightSectionExtras = useMemo(() => { const extras: React.ReactNode[] = [] extras.push() - extras.push() + extras.push() if (isLoading) { extras.push( @@ -633,7 +635,7 @@ export const InputbarCore: FC = ({ } return <>{extras} - }, [text, onTranslated, isTranslating, handleSendMessage, cannotSend, isLoading, searching, t, onPause]) + }, [text, onTranslated, isTranslating, handleSendMessage, isSendDisabled, isLoading, t, onPause]) const quickPanelElement = config.enableQuickPanel ? : null