import React from "react"; import { Provider } from "../types"; import { Play, Edit3, Trash2, CheckCircle2, Users } from "lucide-react"; interface ProviderListProps { providers: Record; currentProviderId: string; onSwitch: (id: string) => void; onDelete: (id: string) => void; onEdit: (id: string) => void; } const ProviderList: React.FC = ({ providers, currentProviderId, onSwitch, onDelete, onEdit, }) => { // 提取API地址(兼容不同供应商配置:Claude env / Codex TOML) const getApiUrl = (provider: Provider): string => { try { const cfg = provider.settingsConfig; // Claude/Anthropic: 从 env 中读取 if (cfg?.env?.ANTHROPIC_BASE_URL) { return cfg.env.ANTHROPIC_BASE_URL; } // Codex: 从 TOML 配置中解析 base_url if (typeof cfg?.config === "string" && cfg.config.includes("base_url")) { const match = cfg.config.match(/base_url\s*=\s*"([^"]+)"/); if (match && match[1]) return match[1]; } return "未配置官网地址"; } catch { return "配置错误"; } }; const handleUrlClick = async (url: string) => { try { await window.api.openExternal(url); } catch (error) { console.error("打开链接失败:", error); } }; return (
{Object.values(providers).length === 0 ? (

还没有添加任何供应商

点击右上角的"添加供应商"按钮开始配置您的第一个API供应商

) : (
{Object.values(providers).map((provider) => { const isCurrent = provider.id === currentProviderId; const apiUrl = getApiUrl(provider); return (

{provider.name}

{isCurrent && (
当前使用
)}
{provider.websiteUrl ? ( ) : ( {apiUrl} )}
); })}
)}
); }; export default ProviderList;