From db28ccb27b6e21a15c6d5e4b48b66bab0156eb8c Mon Sep 17 00:00:00 2001 From: farion1231 Date: Thu, 7 Aug 2025 22:08:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7=E4=BD=93?= =?UTF-8?q?=E9=AA=8C=EF=BC=9A=E7=AE=80=E5=8C=96=E6=95=B0=E6=8D=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E5=B9=B6=E6=94=B9=E8=BF=9B=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E8=AE=BF=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 Provider 中无用的 createdAt 和 updatedAt 字段 - 简化数据结构,去除冗余的时间戳设置代码 - 将底部"浏览"按钮改为"打开",直接打开配置文件夹 - 新增 openConfigFolder API,使用 shell.openPath 打开文件夹 - 优化用户体验,方便用户查看和管理所有配置文件 --- src/main/index.ts | 27 ++++++++++--------- src/main/preload.ts | 1 + src/main/services.ts | 2 -- src/renderer/App.tsx | 13 ++++----- src/renderer/components/EditProviderModal.tsx | 1 - src/shared/types.ts | 5 ++-- 6 files changed, 22 insertions(+), 27 deletions(-) diff --git a/src/main/index.ts b/src/main/index.ts index 39306fe..6e7d0ea 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -76,11 +76,7 @@ ipcMain.handle("addProvider", async (_, provider: Provider) => { // 2. 更新应用配置 const providers = store.get("providers", {} as Record); - providers[provider.id] = { - ...provider, - createdAt: Date.now(), - updatedAt: Date.now(), - }; + providers[provider.id] = provider; await store.set("providers", providers); return true; @@ -150,19 +146,13 @@ ipcMain.handle("updateProvider", async (_, provider: Provider) => { } // 2. 保存更新后的配置到文件 - const saveSuccess = await saveProviderConfig({ - ...provider, - updatedAt: Date.now(), - }); + const saveSuccess = await saveProviderConfig(provider); if (!saveSuccess) { return false; } // 3. 更新应用配置 - providers[provider.id] = { - ...provider, - updatedAt: Date.now(), - }; + providers[provider.id] = provider; await store.set("providers", providers); // 4. 如果编辑的是当前激活的供应商,需要重新切换以应用更改 @@ -261,6 +251,17 @@ ipcMain.handle("selectConfigFile", async () => { return result.filePaths[0]; }); +ipcMain.handle("openConfigFolder", async () => { + try { + const { dir } = getClaudeCodeConfig(); + await shell.openPath(dir); + return true; + } catch (error) { + console.error("打开配置文件夹失败:", error); + return false; + } +}); + ipcMain.handle("openExternal", async (_, url: string) => { try { await shell.openExternal(url); diff --git a/src/main/preload.ts b/src/main/preload.ts index 8e25ec0..0f8b982 100644 --- a/src/main/preload.ts +++ b/src/main/preload.ts @@ -11,5 +11,6 @@ contextBridge.exposeInMainWorld('electronAPI', { importCurrentConfigAsDefault: () => ipcRenderer.invoke('importCurrentConfigAsDefault'), getClaudeCodeConfigPath: () => ipcRenderer.invoke('getClaudeCodeConfigPath'), selectConfigFile: () => ipcRenderer.invoke('selectConfigFile'), + openConfigFolder: () => ipcRenderer.invoke('openConfigFolder'), openExternal: (url: string) => ipcRenderer.invoke('openExternal', url) }) \ No newline at end of file diff --git a/src/main/services.ts b/src/main/services.ts index f06542d..2a9bb26 100644 --- a/src/main/services.ts +++ b/src/main/services.ts @@ -149,8 +149,6 @@ export async function importCurrentConfigAsDefault(): Promise<{ success: boolean id: "default", name: "默认", settingsConfig: settingsConfig, - createdAt: Date.now(), - updatedAt: Date.now(), }; // 保存默认供应商的配置到独立文件 diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index fc0bb56..2ae8aa1 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -160,11 +160,8 @@ function App() { } } - const handleSelectConfigFile = async () => { - const selectedPath = await window.electronAPI.selectConfigFile(); - if (selectedPath) { - setConfigPath(selectedPath); - } + const handleOpenConfigFolder = async () => { + await window.electronAPI.openConfigFolder(); }; return ( @@ -207,10 +204,10 @@ function App() { 配置文件位置: {configPath} )} diff --git a/src/renderer/components/EditProviderModal.tsx b/src/renderer/components/EditProviderModal.tsx index bf598c0..7d1f738 100644 --- a/src/renderer/components/EditProviderModal.tsx +++ b/src/renderer/components/EditProviderModal.tsx @@ -53,7 +53,6 @@ const EditProviderModal: React.FC = ({ provider, onSave, name: formData.name, websiteUrl: formData.websiteUrl, settingsConfig, - updatedAt: Date.now() }) } diff --git a/src/shared/types.ts b/src/shared/types.ts index 5ac6abe..6e1b4b1 100644 --- a/src/shared/types.ts +++ b/src/shared/types.ts @@ -3,8 +3,6 @@ export interface Provider { name: string settingsConfig: object // 完整的Claude Code settings.json配置 websiteUrl?: string - createdAt?: number - updatedAt?: number } export interface AppConfig { @@ -21,9 +19,10 @@ declare global { deleteProvider: (id: string) => Promise updateProvider: (provider: Provider) => Promise switchProvider: (providerId: string) => Promise - importCurrentConfig: (name: string) => Promise<{ success: boolean; providerId?: string }> + importCurrentConfigAsDefault: () => Promise<{ success: boolean; providerId?: string }> getClaudeCodeConfigPath: () => Promise selectConfigFile: () => Promise + openConfigFolder: () => Promise openExternal: (url: string) => Promise } }