import { useMemo } from "react";
import type { AppType } from "@/lib/api";
import type { ProviderCategory } from "@/types";
import type { ProviderPreset } from "@/config/providerPresets";
import type { CodexProviderPreset } from "@/config/codexProviderPresets";

type PresetEntry = {
  id: string;
  preset: ProviderPreset | CodexProviderPreset;
};

interface UseApiKeyLinkProps {
  appType: AppType;
  category?: ProviderCategory;
  selectedPresetId: string | null;
  presetEntries: PresetEntry[];
  formWebsiteUrl: string;
}

/**
 * 管理 API Key 获取链接的显示和 URL
 */
export function useApiKeyLink({
  appType,
  category,
  selectedPresetId,
  presetEntries,
  formWebsiteUrl,
}: UseApiKeyLinkProps) {
  // 判断是否显示 API Key 获取链接
  const shouldShowApiKeyLink = useMemo(() => {
    return (
      category !== "official" &&
      (category === "cn_official" ||
        category === "aggregator" ||
        category === "third_party")
    );
  }, [category]);

  // 获取当前供应商的网址（用于 API Key 链接）
  const getWebsiteUrl = useMemo(() => {
    if (selectedPresetId && selectedPresetId !== "custom") {
      const entry = presetEntries.find((item) => item.id === selectedPresetId);
      if (entry) {
        const preset = entry.preset;
        // 第三方供应商优先使用 apiKeyUrl
        return preset.category === "third_party"
          ? preset.apiKeyUrl || preset.websiteUrl || ""
          : preset.websiteUrl || "";
      }
    }
    return formWebsiteUrl || "";
  }, [selectedPresetId, presetEntries, formWebsiteUrl]);

  return {
    shouldShowApiKeyLink:
      appType === "claude"
        ? shouldShowApiKeyLink
        : appType === "codex"
          ? shouldShowApiKeyLink
          : false,
    websiteUrl: getWebsiteUrl,
  };
}
