@@ -90,7 +90,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
9090 const [ activeQuote , setActiveQuote ] = useState < string | null > ( null )
9191 const [ isTextAreaFocused , setIsTextAreaFocused ] = useState ( false )
9292 const textAreaRef = useRef < HTMLTextAreaElement > ( null )
93- const [ textAreaDisabled , setTextAreaDisabled ] = useState ( false )
93+ const [ sendingDisabled , setSendingDisabled ] = useState ( false )
9494 const [ selectedImages , setSelectedImages ] = useState < string [ ] > ( [ ] )
9595
9696 // we need to hold on to the ask because useEffect > lastMessage will always let us know when an ask comes in and handle it, but by the time handleMessage is called, the last message might not be the ask anymore (it could be a say that followed)
@@ -147,42 +147,42 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
147147 const isPartial = lastMessage . partial === true
148148 switch ( lastMessage . ask ) {
149149 case "api_req_failed" :
150- setTextAreaDisabled ( true )
150+ setSendingDisabled ( true )
151151 setClineAsk ( "api_req_failed" )
152152 setEnableButtons ( true )
153153 setPrimaryButtonText ( "Retry" )
154154 setSecondaryButtonText ( "Start New Task" )
155155 break
156156 case "mistake_limit_reached" :
157- setTextAreaDisabled ( false )
157+ setSendingDisabled ( false )
158158 setClineAsk ( "mistake_limit_reached" )
159159 setEnableButtons ( true )
160160 setPrimaryButtonText ( "Proceed Anyways" )
161161 setSecondaryButtonText ( "Start New Task" )
162162 break
163163 case "auto_approval_max_req_reached" :
164- setTextAreaDisabled ( true )
164+ setSendingDisabled ( true )
165165 setClineAsk ( "auto_approval_max_req_reached" )
166166 setEnableButtons ( true )
167167 setPrimaryButtonText ( "Proceed" )
168168 setSecondaryButtonText ( "Start New Task" )
169169 break
170170 case "followup" :
171- setTextAreaDisabled ( isPartial )
171+ setSendingDisabled ( isPartial )
172172 setClineAsk ( "followup" )
173173 setEnableButtons ( false )
174174 // setPrimaryButtonText(undefined)
175175 // setSecondaryButtonText(undefined)
176176 break
177177 case "plan_mode_respond" :
178- setTextAreaDisabled ( isPartial )
178+ setSendingDisabled ( isPartial )
179179 setClineAsk ( "plan_mode_respond" )
180180 setEnableButtons ( false )
181181 // setPrimaryButtonText(undefined)
182182 // setSecondaryButtonText(undefined)
183183 break
184184 case "tool" :
185- setTextAreaDisabled ( isPartial )
185+ setSendingDisabled ( isPartial )
186186 setClineAsk ( "tool" )
187187 setEnableButtons ( ! isPartial )
188188 const tool = JSON . parse ( lastMessage . text || "{}" ) as ClineSayTool
@@ -199,66 +199,66 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
199199 }
200200 break
201201 case "browser_action_launch" :
202- setTextAreaDisabled ( isPartial )
202+ setSendingDisabled ( isPartial )
203203 setClineAsk ( "browser_action_launch" )
204204 setEnableButtons ( ! isPartial )
205205 setPrimaryButtonText ( "Approve" )
206206 setSecondaryButtonText ( "Reject" )
207207 break
208208 case "command" :
209- setTextAreaDisabled ( isPartial )
209+ setSendingDisabled ( isPartial )
210210 setClineAsk ( "command" )
211211 setEnableButtons ( ! isPartial )
212212 setPrimaryButtonText ( "Run Command" )
213213 setSecondaryButtonText ( "Reject" )
214214 break
215215 case "command_output" :
216- setTextAreaDisabled ( false )
216+ setSendingDisabled ( false )
217217 setClineAsk ( "command_output" )
218218 setEnableButtons ( true )
219219 setPrimaryButtonText ( "Proceed While Running" )
220220 setSecondaryButtonText ( undefined )
221221 break
222222 case "use_mcp_server" :
223- setTextAreaDisabled ( isPartial )
223+ setSendingDisabled ( isPartial )
224224 setClineAsk ( "use_mcp_server" )
225225 setEnableButtons ( ! isPartial )
226226 setPrimaryButtonText ( "Approve" )
227227 setSecondaryButtonText ( "Reject" )
228228 break
229229 case "completion_result" :
230230 // extension waiting for feedback. but we can just present a new task button
231- setTextAreaDisabled ( isPartial )
231+ setSendingDisabled ( isPartial )
232232 setClineAsk ( "completion_result" )
233233 setEnableButtons ( ! isPartial )
234234 setPrimaryButtonText ( "Start New Task" )
235235 setSecondaryButtonText ( undefined )
236236 break
237237 case "resume_task" :
238- setTextAreaDisabled ( false )
238+ setSendingDisabled ( false )
239239 setClineAsk ( "resume_task" )
240240 setEnableButtons ( true )
241241 setPrimaryButtonText ( "Resume Task" )
242242 setSecondaryButtonText ( undefined )
243243 setDidClickCancel ( false ) // special case where we reset the cancel button state
244244 break
245245 case "resume_completed_task" :
246- setTextAreaDisabled ( false )
246+ setSendingDisabled ( false )
247247 setClineAsk ( "resume_completed_task" )
248248 setEnableButtons ( true )
249249 setPrimaryButtonText ( "Start New Task" )
250250 setSecondaryButtonText ( undefined )
251251 setDidClickCancel ( false )
252252 break
253253 case "new_task" :
254- setTextAreaDisabled ( isPartial )
254+ setSendingDisabled ( isPartial )
255255 setClineAsk ( "new_task" )
256256 setEnableButtons ( ! isPartial )
257257 setPrimaryButtonText ( "Start New Task with Context" )
258258 setSecondaryButtonText ( undefined )
259259 break
260260 case "condense" :
261- setTextAreaDisabled ( isPartial )
261+ setSendingDisabled ( isPartial )
262262 setClineAsk ( "condense" )
263263 setEnableButtons ( ! isPartial )
264264 setPrimaryButtonText ( "Condense Conversation" )
@@ -273,7 +273,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
273273 if ( secondLastMessage ?. ask === "command_output" ) {
274274 // if the last ask is a command_output, and we receive an api_req_started, then that means the command has finished and we don't need input from the user anymore (in every other case, the user has to interact with input field or buttons to continue, which does the following automatically)
275275 setInputValue ( "" )
276- setTextAreaDisabled ( true )
276+ setSendingDisabled ( true )
277277 setSelectedImages ( [ ] )
278278 setClineAsk ( undefined )
279279 setEnableButtons ( false )
@@ -310,7 +310,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
310310
311311 useEffect ( ( ) => {
312312 if ( messages . length === 0 ) {
313- setTextAreaDisabled ( false )
313+ setSendingDisabled ( false )
314314 setClineAsk ( undefined )
315315 setEnableButtons ( false )
316316 setPrimaryButtonText ( "Approve" )
@@ -397,7 +397,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
397397 }
398398 setInputValue ( "" )
399399 setActiveQuote ( null ) // Clear quote when sending message
400- setTextAreaDisabled ( true )
400+ setSendingDisabled ( true )
401401 setSelectedImages ( [ ] )
402402 setClineAsk ( undefined )
403403 setEnableButtons ( false )
@@ -467,7 +467,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
467467 } )
468468 break
469469 }
470- setTextAreaDisabled ( true )
470+ setSendingDisabled ( true )
471471 setClineAsk ( undefined )
472472 setEnableButtons ( false )
473473 // setPrimaryButtonText(undefined)
@@ -516,7 +516,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
516516 setSelectedImages ( [ ] )
517517 break
518518 }
519- setTextAreaDisabled ( true )
519+ setSendingDisabled ( true )
520520 setClineAsk ( undefined )
521521 setEnableButtons ( false )
522522 // setPrimaryButtonText(undefined)
@@ -542,8 +542,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
542542 vscode . postMessage ( { type : "selectImages" } )
543543 } , [ ] )
544544
545- const shouldDisableImages =
546- ! selectedModelInfo . supportsImages || textAreaDisabled || selectedImages . length >= MAX_IMAGES_PER_MESSAGE
545+ const shouldDisableImages = ! selectedModelInfo . supportsImages || selectedImages . length >= MAX_IMAGES_PER_MESSAGE
547546
548547 const handleMessage = useCallback (
549548 ( e : MessageEvent ) => {
@@ -552,7 +551,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
552551 case "action" :
553552 switch ( message . action ! ) {
554553 case "didBecomeVisible" :
555- if ( ! isHidden && ! textAreaDisabled && ! enableButtons ) {
554+ if ( ! isHidden && ! sendingDisabled && ! enableButtons ) {
556555 textAreaRef . current ?. focus ( )
557556 }
558557 break
@@ -601,7 +600,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
601600 }
602601 // textAreaRef.current is not explicitly required here since react guarantees that ref will be stable across re-renders, and we're not using its value but its reference.
603602 } ,
604- [ isHidden , textAreaDisabled , enableButtons , handleSendMessage , handlePrimaryButtonClick , handleSecondaryButtonClick ] ,
603+ [ isHidden , sendingDisabled , enableButtons , handleSendMessage , handlePrimaryButtonClick , handleSecondaryButtonClick ] ,
605604 )
606605
607606 useEvent ( "message" , handleMessage )
@@ -613,14 +612,14 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
613612
614613 useEffect ( ( ) => {
615614 const timer = setTimeout ( ( ) => {
616- if ( ! isHidden && ! textAreaDisabled && ! enableButtons ) {
615+ if ( ! isHidden && ! sendingDisabled && ! enableButtons ) {
617616 textAreaRef . current ?. focus ( )
618617 }
619618 } , 50 )
620619 return ( ) => {
621620 clearTimeout ( timer )
622621 }
623- } , [ isHidden , textAreaDisabled , enableButtons ] )
622+ } , [ isHidden , sendingDisabled , enableButtons ] )
624623
625624 const visibleMessages = useMemo ( ( ) => {
626625 return modifiedMessages . filter ( ( message ) => {
@@ -1096,7 +1095,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
10961095 activeQuote = { activeQuote }
10971096 inputValue = { inputValue }
10981097 setInputValue = { setInputValue }
1099- textAreaDisabled = { textAreaDisabled }
1098+ sendingDisabled = { sendingDisabled }
11001099 placeholderText = { placeholderText }
11011100 selectedImages = { selectedImages }
11021101 setSelectedImages = { setSelectedImages }
0 commit comments