import { useState, useCallback } from "react"; import { getApiKeyFromConfig, setApiKeyInConfig, hasApiKeyField, } from "@/utils/providerConfigUtils"; interface UseApiKeyStateProps { initialConfig?: string; onConfigChange: (config: string) => void; selectedPresetId: string | null; } /** * 管理 API Key 输入状态 * 自动同步 API Key 和 JSON 配置 */ export function useApiKeyState({ initialConfig, onConfigChange, selectedPresetId, }: UseApiKeyStateProps) { const [apiKey, setApiKey] = useState(() => { if (initialConfig) { return getApiKeyFromConfig(initialConfig); } return ""; }); const handleApiKeyChange = useCallback( (key: string) => { setApiKey(key); const configString = setApiKeyInConfig( initialConfig || "{}", key.trim(), { createIfMissing: selectedPresetId !== null && selectedPresetId !== "custom", }, ); onConfigChange(configString); }, [initialConfig, selectedPresetId, onConfigChange], ); const showApiKey = useCallback( (config: string, isEditMode: boolean) => { return ( selectedPresetId !== null || (!isEditMode && hasApiKeyField(config)) ); }, [selectedPresetId], ); return { apiKey, setApiKey, handleApiKeyChange, showApiKey, }; }