diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index 99b2d2e0b7..19ca158369 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -243,7 +243,7 @@ export const ChatTextArea = forwardRef( }, [selectedType, searchQuery]) const handleEnhancePrompt = useCallback(() => { - const trimmedInput = inputValue.trim() + const trimmedInput = (inputValue ?? "").trim() if (trimmedInput) { setIsEnhancingPrompt(true) @@ -257,7 +257,7 @@ export const ChatTextArea = forwardRef( // Memoized check for whether the input has content (text or images) const hasInputContent = useMemo(() => { - return inputValue.trim().length > 0 || selectedImages.length > 0 + return (inputValue ?? "").trim().length > 0 || selectedImages.length > 0 }, [inputValue, selectedImages]) // Compute the key combination text for the send button tooltip based on enterBehavior diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index baad2e6a8d..ba08624353 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -184,7 +184,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction { - return !!(inputValue && inputValue.trim().length > 0 && clineAsk === "followup") + return !!(inputValue && (inputValue ?? "").trim().length > 0 && clineAsk === "followup") }, [inputValue, clineAsk]) // Cancel auto-approval timeout when user starts typing @@ -691,7 +691,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction { - const text = inputValue.trim() + const text = (inputValue ?? "").trim() if (text || selectedImages.length > 0) { vscode.postMessage({ type: "queueMessage", @@ -1517,12 +1517,12 @@ const ChatViewComponent: React.ForwardRefRenderFunction ({ acceptInput: () => { - const hasInput = inputValue.trim() || selectedImages.length > 0 + const hasInput = (inputValue ?? "").trim() || selectedImages.length > 0 // Special case: during command_output, queue the message instead of // triggering the primary button action (which would lose the message) if (clineAskRef.current === "command_output" && hasInput) { - vscode.postMessage({ type: "queueMessage", text: inputValue.trim(), images: selectedImages }) + vscode.postMessage({ type: "queueMessage", text: (inputValue ?? "").trim(), images: selectedImages }) setInputValue("") setSelectedImages([]) return