import React, { useState, useEffect } from "react"; import { CodexAuthSection, CodexConfigSection } from "./CodexConfigSections"; import { CodexCommonConfigModal } from "./CodexCommonConfigModal"; interface CodexConfigEditorProps { authValue: string; configValue: string; onAuthChange: (value: string) => void; onConfigChange: (value: string) => void; onAuthBlur?: () => void; useCommonConfig: boolean; onCommonConfigToggle: (checked: boolean) => void; commonConfigSnippet: string; onCommonConfigSnippetChange: (value: string) => void; commonConfigError: string; authError: string; configError: string; // config.toml 错误提示 onExtract?: () => void; isExtracting?: boolean; /** 最终合并后的配置(只读预览) */ finalConfig?: string; } const CodexConfigEditor: React.FC = ({ authValue, configValue, onAuthChange, onConfigChange, onAuthBlur, useCommonConfig, onCommonConfigToggle, commonConfigSnippet, onCommonConfigSnippetChange, commonConfigError, authError, configError, onExtract, isExtracting, finalConfig, }) => { const [isCommonConfigModalOpen, setIsCommonConfigModalOpen] = useState(false); // Auto-open common config modal if there's an error useEffect(() => { if (commonConfigError && !isCommonConfigModalOpen) { setIsCommonConfigModalOpen(true); } }, [commonConfigError, isCommonConfigModalOpen]); return (
{/* Auth JSON Section */} {/* Config TOML Section */} setIsCommonConfigModalOpen(true)} commonConfigError={commonConfigError} configError={configError} finalConfig={finalConfig} /> {/* Common Config Modal */} setIsCommonConfigModalOpen(false)} value={commonConfigSnippet} onChange={onCommonConfigSnippetChange} error={commonConfigError} onExtract={onExtract} isExtracting={isExtracting} />
); }; export default CodexConfigEditor;