diff --git a/src/components/providers/forms/ClaudeDesktopProviderForm.tsx b/src/components/providers/forms/ClaudeDesktopProviderForm.tsx index bd0fd3e44..1030c6d0f 100644 --- a/src/components/providers/forms/ClaudeDesktopProviderForm.tsx +++ b/src/components/providers/forms/ClaudeDesktopProviderForm.tsx @@ -39,9 +39,11 @@ import { Switch } from "@/components/ui/switch"; import { BasicFormFields } from "./BasicFormFields"; import { CodexOAuthSection } from "./CodexOAuthSection"; import { CopilotAuthSection } from "./CopilotAuthSection"; +import { ApiKeySection } from "./shared/ApiKeySection"; import { EndpointField } from "./shared/EndpointField"; import { ModelDropdown } from "./shared/ModelDropdown"; import { ProviderPresetSelector } from "./ProviderPresetSelector"; +import { useApiKeyLink } from "./hooks/useApiKeyLink"; import { providerSchema, type ProviderFormData } from "@/lib/schemas/provider"; import type { ClaudeApiFormat, @@ -383,6 +385,21 @@ export function ClaudeDesktopProviderForm({ activeProviderType === "github_copilot" || activeProviderType === "codex_oauth"; + // API Key 获取/邀请链接(与 Claude Code 表单同款,见 ClaudeFormFields) + const apiKeyLinkCategory = activePreset?.category ?? initialData?.category; + const { + shouldShowApiKeyLink, + websiteUrl: apiKeyLinkWebsiteUrl, + isPartner: apiKeyLinkIsPartner, + partnerPromotionKey: apiKeyLinkPromotionKey, + } = useApiKeyLink({ + appId: "claude-desktop", + category: apiKeyLinkCategory, + selectedPresetId, + presetEntries, + formWebsiteUrl: form.watch("websiteUrl") || "", + }); + const applyDesktopPreset = (preset: ClaudeDesktopProviderPreset) => { form.setValue("name", preset.nameKey ? t(preset.nameKey) : preset.name); form.setValue("websiteUrl", preset.websiteUrl); @@ -766,15 +783,15 @@ export function ClaudeDesktopProviderForm({ )} ) : ( -