diff --git a/src/components/providers/forms/ProviderForm.tsx b/src/components/providers/forms/ProviderForm.tsx index f5f014d..1a74683 100644 --- a/src/components/providers/forms/ProviderForm.tsx +++ b/src/components/providers/forms/ProviderForm.tsx @@ -254,6 +254,52 @@ export function ProviderForm({ const shouldShowSpeedTest = category === "third_party" || category === "custom"; + // 判断是否显示 Claude API Key 获取链接 + const shouldShowClaudeApiKeyLink = + appType === "claude" && + category !== "official" && + (category === "cn_official" || + category === "aggregator" || + category === "third_party"); + + // 获取当前 Claude 供应商的网址(用于 API Key 链接) + const getCurrentClaudeWebsiteUrl = (): string => { + if (selectedPresetId && selectedPresetId !== "custom") { + const entry = presetEntries.find((item) => item.id === selectedPresetId); + if (entry) { + const preset = entry.preset as ProviderPreset; + // 第三方供应商优先使用 apiKeyUrl + return preset.category === "third_party" + ? preset.apiKeyUrl || preset.websiteUrl || "" + : preset.websiteUrl || ""; + } + } + return form.watch("websiteUrl") || ""; + }; + + // 判断是否显示 Codex API Key 获取链接 + const shouldShowCodexApiKeyLink = + appType === "codex" && + category !== "official" && + (category === "cn_official" || + category === "aggregator" || + category === "third_party"); + + // 获取当前 Codex 供应商的网址(用于 API Key 链接) + const getCurrentCodexWebsiteUrl = (): string => { + if (selectedPresetId && selectedPresetId !== "custom") { + const entry = presetEntries.find((item) => item.id === selectedPresetId); + if (entry) { + const preset = entry.preset as CodexProviderPreset; + // 第三方供应商优先使用 apiKeyUrl + return preset.category === "third_party" + ? preset.apiKeyUrl || preset.websiteUrl || "" + : preset.websiteUrl || ""; + } + } + return form.watch("websiteUrl") || ""; + }; + const handlePresetChange = (value: string) => { setSelectedPresetId(value); if (value === "custom") { @@ -403,7 +449,7 @@ export function ProviderForm({ {/* API Key 输入框(仅 Claude 且非编辑模式显示) */} {appType === "claude" && shouldShowApiKey(form.watch("settingsConfig"), isEditMode) && ( -