From 5be45e269ced530c9a3bfe7cb378b5f076ac9dad Mon Sep 17 00:00:00 2001 From: farion1231 Date: Thu, 7 Aug 2025 21:37:34 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96=E7=95=8C=E9=9D=A2=EF=BC=9A?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=AF=BC=E5=85=A5=E5=BD=93=E5=89=8D=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 ImportConfigModal 组件及相关文件 - 删除头部的导入当前配置按钮 - 移除 importCurrentConfig 相关的 API 和 IPC 处理器 - 保留 importCurrentConfigAsDefault 功能用于首次启动 - 界面更简洁,专注核心功能:添加、编辑、切换、删除供应商 - 减少用户困惑,因为自动创建的默认供应商已经满足大部分需求 --- src/main/index.ts | 21 ------ src/main/preload.ts | 1 - src/main/services.ts | 54 --------------- src/renderer/App.tsx | 29 -------- src/renderer/components/ImportConfigModal.tsx | 67 ------------------- 5 files changed, 172 deletions(-) delete mode 100644 src/renderer/components/ImportConfigModal.tsx diff --git a/src/main/index.ts b/src/main/index.ts index 37660e8..39306fe 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -8,7 +8,6 @@ import { saveProviderConfig, deleteProviderConfig, sanitizeProviderName, - importCurrentConfig, importCurrentConfigAsDefault, getProviderConfigPath, fileExists, @@ -215,26 +214,6 @@ ipcMain.handle("switchProvider", async (_, providerId: string) => { } }); -ipcMain.handle("importCurrentConfig", async (_, name: string) => { - try { - const result = await importCurrentConfig(name); - - if (result.success && result.provider) { - // 将导入的供应商添加到store中 - const providers = store.get("providers", {} as Record); - providers[result.provider.id] = result.provider; - await store.set("providers", providers); - - return { success: true, providerId: result.provider.id }; - } - - return result; - } catch (error: any) { - console.error("导入配置失败:", error); - return { success: false }; - } -}); - ipcMain.handle("importCurrentConfigAsDefault", async () => { try { const result = await importCurrentConfigAsDefault(); diff --git a/src/main/preload.ts b/src/main/preload.ts index aa17ef0..8e25ec0 100644 --- a/src/main/preload.ts +++ b/src/main/preload.ts @@ -8,7 +8,6 @@ contextBridge.exposeInMainWorld('electronAPI', { deleteProvider: (id: string) => ipcRenderer.invoke('deleteProvider', id), updateProvider: (provider: Provider) => ipcRenderer.invoke('updateProvider', provider), switchProvider: (providerId: string) => ipcRenderer.invoke('switchProvider', providerId), - importCurrentConfig: (name: string) => ipcRenderer.invoke('importCurrentConfig', name), importCurrentConfigAsDefault: () => ipcRenderer.invoke('importCurrentConfigAsDefault'), getClaudeCodeConfigPath: () => ipcRenderer.invoke('getClaudeCodeConfigPath'), selectConfigFile: () => ipcRenderer.invoke('selectConfigFile'), diff --git a/src/main/services.ts b/src/main/services.ts index 0529d3c..9eceb41 100644 --- a/src/main/services.ts +++ b/src/main/services.ts @@ -136,60 +136,6 @@ export async function switchProvider( } } -/** - * 导入当前 settings.json 配置为一个供应商 - */ -export async function importCurrentConfig( - name: string -): Promise<{ success: boolean; provider?: Provider }> { - try { - const { path: settingsPath } = getClaudeCodeConfig(); - - // 检查当前配置是否存在 - if (!(await fileExists(settingsPath))) { - return { success: false }; - } - - // 读取当前配置 - const configContent = await fs.readFile(settingsPath, "utf-8"); - const settingsConfig = JSON.parse(configContent); - - // 生成唯一的供应商ID - let providerId = name.toLowerCase().replace(/[^a-z0-9]/g, "-"); - let counter = 1; - - // 检查ID是否已存在,如果存在则添加数字后缀 - while (await fileExists(getProviderConfigPath(providerId, name))) { - providerId = `${name - .toLowerCase() - .replace(/[^a-z0-9]/g, "-")}-${counter}`; - counter++; - } - - // 创建供应商对象 - const provider: Provider = { - id: providerId, - name: name, - settingsConfig: settingsConfig, - createdAt: Date.now(), - updatedAt: Date.now(), - }; - - // 保存为供应商配置 - const success = await saveProviderConfig(provider); - - if (success) { - console.log(`已导入当前配置为供应商: ${name} (${providerId})`); - return { success: true, provider }; - } else { - return { success: false }; - } - } catch (error: any) { - console.error("导入当前配置失败:", error); - return { success: false }; - } -} - /** * 导入当前配置为默认供应商(不生成独立配置文件) */ diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index bc82747..fc0bb56 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -3,7 +3,6 @@ import { Provider } from "../shared/types"; import ProviderList from "./components/ProviderList"; import AddProviderModal from "./components/AddProviderModal"; import EditProviderModal from "./components/EditProviderModal"; -import ImportConfigModal from "./components/ImportConfigModal"; import { ConfirmDialog } from "./components/ConfirmDialog"; import "./App.css"; @@ -11,7 +10,6 @@ function App() { const [providers, setProviders] = useState>({}); const [currentProviderId, setCurrentProviderId] = useState(""); const [isAddModalOpen, setIsAddModalOpen] = useState(false); - const [isImportModalOpen, setIsImportModalOpen] = useState(false); const [configPath, setConfigPath] = useState(""); const [editingProviderId, setEditingProviderId] = useState( null @@ -146,23 +144,6 @@ function App() { } }; - const handleImportCurrentConfig = async (name: string) => { - try { - const result = await window.electronAPI.importCurrentConfig(name) - - if (result.success) { - await loadProviders() - setIsImportModalOpen(false) - showNotification(`成功导入当前配置为供应商: ${name}`, "success", 3000) - } else { - showNotification("导入失败,请检查当前是否有有效的配置文件", "error") - } - } catch (error) { - console.error('导入配置失败:', error) - showNotification("导入配置时发生错误", "error") - } - } - // 自动导入现有配置为"默认"供应商 const handleAutoImportDefault = async () => { try { @@ -191,9 +172,6 @@ function App() {

Claude Code 供应商切换器

- @@ -245,13 +223,6 @@ function App() { /> )} - {isImportModalOpen && ( - setIsImportModalOpen(false)} - /> - )} - {editingProviderId && providers[editingProviderId] && ( void - onClose: () => void -} - -const ImportConfigModal: React.FC = ({ onImport, onClose }) => { - const [name, setName] = useState('') - const [error, setError] = useState('') - - const handleSubmit = (e: React.FormEvent) => { - e.preventDefault() - setError('') - - if (!name.trim()) { - setError('请输入供应商名称') - return - } - - onImport(name.trim()) - } - - return ( -
-
-

导入当前配置

- -

- 将当前的 ~/.claude/settings.json 配置文件导入为一个新的供应商。 -
- 注意:这不会修改您当前的配置文件。 -

- - {error &&
{error}
} - -
-
- - setName(e.target.value)} - placeholder="例如:我的当前配置" - required - autoFocus - /> -
- -
- - -
-
-
-
- ) -} - -export default ImportConfigModal \ No newline at end of file