Skip to content

Commit dc02bb2

Browse files
authored
Enable model select when api fails (#2217)
* Enable model switching on API failure Bug: Cannot change model selection after API error due to UI state #1657 UI Bug: OpenRouter ran out of credits prevents user from switching models #1206 * Remove irrelevant code
1 parent 0759de2 commit dc02bb2

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

webview-ui/src/components/chat/ChatTextArea.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ interface ChatTextAreaProps {
3232
inputValue: string
3333
setInputValue: (value: string) => void
3434
textAreaDisabled: boolean
35+
selectApiConfigDisabled: boolean
3536
placeholderText: string
3637
selectedImages: string[]
3738
setSelectedImages: React.Dispatch<React.SetStateAction<string[]>>
@@ -50,6 +51,7 @@ const ChatTextArea = forwardRef<HTMLTextAreaElement, ChatTextAreaProps>(
5051
inputValue,
5152
setInputValue,
5253
textAreaDisabled,
54+
selectApiConfigDisabled,
5355
placeholderText,
5456
selectedImages,
5557
setSelectedImages,
@@ -975,7 +977,7 @@ const ChatTextArea = forwardRef<HTMLTextAreaElement, ChatTextAreaProps>(
975977
<div className={cn("flex-1", "min-w-0", "overflow-hidden")}>
976978
<SelectDropdown
977979
value={currentConfigId}
978-
disabled={textAreaDisabled}
980+
disabled={selectApiConfigDisabled}
979981
title={t("chat:selectApiConfig")}
980982
placeholder={displayName} // Always show the current name
981983
options={[

webview-ui/src/components/chat/ChatView.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1346,6 +1346,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
13461346
inputValue={inputValue}
13471347
setInputValue={setInputValue}
13481348
textAreaDisabled={textAreaDisabled}
1349+
selectApiConfigDisabled={textAreaDisabled && clineAsk !== "api_req_failed"}
13491350
placeholderText={placeholderText}
13501351
selectedImages={selectedImages}
13511352
setSelectedImages={setSelectedImages}

webview-ui/src/components/chat/__tests__/ChatTextArea.test.tsx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ describe("ChatTextArea", () => {
4747
setInputValue: jest.fn(),
4848
onSend: jest.fn(),
4949
textAreaDisabled: false,
50+
selectApiConfigDisabled: false,
5051
onSelectImages: jest.fn(),
5152
shouldDisableImages: false,
5253
placeholderText: "Type a message...",
@@ -408,4 +409,21 @@ describe("ChatTextArea", () => {
408409
expect(setInputValue).not.toHaveBeenCalled()
409410
})
410411
})
412+
413+
describe("selectApiConfig", () => {
414+
// Helper function to get the API config dropdown
415+
const getApiConfigDropdown = () => {
416+
return screen.getByTitle("chat:selectApiConfig")
417+
}
418+
it("should be enabled independently of textAreaDisabled", () => {
419+
render(<ChatTextArea {...defaultProps} textAreaDisabled={true} selectApiConfigDisabled={false} />)
420+
const apiConfigDropdown = getApiConfigDropdown()
421+
expect(apiConfigDropdown).not.toHaveAttribute("disabled")
422+
})
423+
it("should be disabled when selectApiConfigDisabled is true", () => {
424+
render(<ChatTextArea {...defaultProps} textAreaDisabled={true} selectApiConfigDisabled={true} />)
425+
const apiConfigDropdown = getApiConfigDropdown()
426+
expect(apiConfigDropdown).toHaveAttribute("disabled")
427+
})
428+
})
411429
})

0 commit comments

Comments
 (0)