refactor(CodeToolsPage): simplify CLI tool change handling and optimize provider filtering logic

This commit is contained in:
kangfenmao 2025-08-21 10:16:22 +08:00
parent a671f95bee
commit c93b96a03f

View File

@ -14,7 +14,7 @@ import { Model } from '@renderer/types'
import { codeTools } from '@shared/config/constant' import { codeTools } from '@shared/config/constant'
import { Alert, Button, Checkbox, Input, Select, Space } from 'antd' import { Alert, Button, Checkbox, Input, Select, Space } from 'antd'
import { Download, Terminal, X } from 'lucide-react' import { Download, Terminal, X } from 'lucide-react'
import { FC, useCallback, useEffect, useState } from 'react' import { FC, useCallback, useEffect, useMemo, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import styled from 'styled-components' import styled from 'styled-components'
@ -56,13 +56,10 @@ const CodeToolsPage: FC = () => {
const [isInstallingBun, setIsInstallingBun] = useState(false) const [isInstallingBun, setIsInstallingBun] = useState(false)
const [autoUpdateToLatest, setAutoUpdateToLatest] = useState(false) const [autoUpdateToLatest, setAutoUpdateToLatest] = useState(false)
// 处理 CLI 工具选择 const handleCliToolChange = (value: codeTools) => setCliTool(value)
const handleCliToolChange = (value: codeTools) => {
setCliTool(value)
// 不再清空模型选择,因为每个工具都会记住自己的模型
}
const openAiProviders = providers.filter((p) => p.type.includes('openai')) const openAiCompatibleProviders = providers.filter((p) => p.type.includes('openai'))
const openAiProviders = providers.filter((p) => p.id === 'openai')
const geminiProviders = providers.filter((p) => p.type === 'gemini' || SUPPORTED_PROVIDERS.includes(p.id)) const geminiProviders = providers.filter((p) => p.type === 'gemini' || SUPPORTED_PROVIDERS.includes(p.id))
const claudeProviders = providers.filter((p) => p.type === 'anthropic' || SUPPORTED_PROVIDERS.includes(p.id)) const claudeProviders = providers.filter((p) => p.type === 'anthropic' || SUPPORTED_PROVIDERS.includes(p.id))
@ -82,14 +79,22 @@ const CodeToolsPage: FC = () => {
[selectedCliTool] [selectedCliTool]
) )
const availableProviders = const availableProviders = useMemo(() => {
selectedCliTool === codeTools.claudeCode if (selectedCliTool === codeTools.claudeCode) {
? claudeProviders return claudeProviders
: selectedCliTool === codeTools.geminiCli }
? geminiProviders if (selectedCliTool === codeTools.geminiCli) {
: openAiProviders return geminiProviders
}
if (selectedCliTool === codeTools.qwenCode) {
return openAiCompatibleProviders
}
if (selectedCliTool === codeTools.openaiCodex) {
return openAiProviders
}
return []
}, [claudeProviders, geminiProviders, openAiCompatibleProviders, openAiProviders, selectedCliTool])
// 处理模型选择
const handleModelChange = (value: string) => { const handleModelChange = (value: string) => {
if (!value) { if (!value) {
setModel(null) setModel(null)