From 97e7f3426081626d3099fdf76f7445e5253de317 Mon Sep 17 00:00:00 2001 From: Jason Date: Sun, 31 Aug 2025 16:55:55 +0800 Subject: [PATCH] feat(ui): enhance Codex provider list display by extracting base_url/model_provider from config.toml; plumb appType into ProviderList --- src/App.tsx | 1 + src/components/ProviderList.tsx | 29 +++++++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index e024edf..75395b0 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -246,6 +246,7 @@ function App() { onSwitch={handleSwitchProvider} onDelete={handleDeleteProvider} onEdit={setEditingProviderId} + appType={activeApp} /> diff --git a/src/components/ProviderList.tsx b/src/components/ProviderList.tsx index 2a76ebf..6d84b67 100644 --- a/src/components/ProviderList.tsx +++ b/src/components/ProviderList.tsx @@ -1,5 +1,6 @@ import React from "react"; import { Provider } from "../types"; +import { AppType } from "../lib/tauri-api"; import "./ProviderList.css"; interface ProviderListProps { @@ -8,6 +9,7 @@ interface ProviderListProps { onSwitch: (id: string) => void; onDelete: (id: string) => void; onEdit: (id: string) => void; + appType?: AppType; } const ProviderList: React.FC = ({ @@ -16,14 +18,37 @@ const ProviderList: React.FC = ({ onSwitch, onDelete, onEdit, + appType = "claude", }) => { // 提取API地址 const getApiUrl = (provider: Provider): string => { try { const config = provider.settingsConfig; - if (config?.env?.ANTHROPIC_BASE_URL) { - return config.env.ANTHROPIC_BASE_URL; + // Claude: 显示 ANTHROPIC_BASE_URL + if (appType === "claude") { + if (config?.env?.ANTHROPIC_BASE_URL) { + return config.env.ANTHROPIC_BASE_URL; + } + return "未设置"; } + + // Codex: 从 TOML 中提取 base_url 或 model_provider + const tomlText: string | undefined = + typeof config?.config === "string" ? config.config : undefined; + if (!tomlText) return "未设置"; + + // 简单解析:base_url = "..." + const baseUrlMatch = tomlText.match(/base_url\s*=\s*"([^"]+)"/); + if (baseUrlMatch && baseUrlMatch[1]) return baseUrlMatch[1]; + + // 回退:model_provider = "..." + const providerMatch = tomlText.match(/model_provider\s*=\s*"([^"]+)"/); + if (providerMatch && providerMatch[1]) return `provider: ${providerMatch[1]}`; + + // 再回退:model = "..." + const modelMatch = tomlText.match(/\bmodel\s*=\s*"([^"]+)"/); + if (modelMatch && modelMatch[1]) return `model: ${modelMatch[1]}`; + return "未设置"; } catch { return "配置错误";