diff --git a/src/components/ProviderForm/CodexConfigEditor.tsx b/src/components/ProviderForm/CodexConfigEditor.tsx index 1b332eb..4af5d33 100644 --- a/src/components/ProviderForm/CodexConfigEditor.tsx +++ b/src/components/ProviderForm/CodexConfigEditor.tsx @@ -30,7 +30,7 @@ const CodexConfigEditor: React.FC = ({ authError, }) => { const [isCommonConfigModalOpen, setIsCommonConfigModalOpen] = useState(false); - const [writeVscodeConfig, setWriteVscodeConfig] = useState(false); + const [isWritingVscode, setIsWritingVscode] = useState(false); const [vscodeError, setVscodeError] = useState(""); const [vscodeSuccess, setVscodeSuccess] = useState(""); @@ -48,51 +48,6 @@ const CodexConfigEditor: React.FC = ({ return () => window.clearTimeout(timer); }, [vscodeSuccess]); - // 监听 writeVscodeConfig 变化并执行写入 - useEffect(() => { - if (!writeVscodeConfig) return; - - const performWrite = async () => { - setVscodeError(""); - setVscodeSuccess(""); - - if (typeof window === "undefined" || !window.api?.writeVscodeSettings) { - setVscodeError("当前环境暂不支持写入 VS Code 配置"); - setWriteVscodeConfig(false); - return; - } - - const trimmed = configValue.trim(); - if (!trimmed) { - setVscodeError("请先填写 config.toml,再写入 VS Code 配置"); - setWriteVscodeConfig(false); - return; - } - - const baseUrl = extractBaseUrlFromToml(trimmed); - if (!baseUrl) { - setVscodeError("未在 config.toml 中找到 base_url 字段"); - setWriteVscodeConfig(false); - return; - } - - try { - const success = await window.api.writeVscodeSettings(baseUrl); - if (success) { - setVscodeSuccess("已写入 VS Code 配置"); - } else { - setVscodeError("写入 VS Code 配置失败,请稍后重试"); - setWriteVscodeConfig(false); - } - } catch (error) { - setVscodeError(`写入 VS Code 配置失败: ${String(error)}`); - setWriteVscodeConfig(false); - } - }; - - performWrite(); - }, [writeVscodeConfig, configValue]); - // 支持按下 ESC 关闭弹窗 useEffect(() => { if (!isCommonConfigModalOpen) return; @@ -111,6 +66,54 @@ const CodexConfigEditor: React.FC = ({ setIsCommonConfigModalOpen(false); }; + const handleAuthChange = (value: string) => { + onAuthChange(value); + }; + + const handleConfigChange = (value: string) => { + onConfigChange(value); + }; + + const handleCommonConfigSnippetChange = (value: string) => { + onCommonConfigSnippetChange(value); + }; + + const handleWriteVscodeConfig = async () => { + setVscodeError(""); + setVscodeSuccess(""); + + if (typeof window === "undefined" || !window.api?.writeVscodeSettings) { + setVscodeError("当前环境暂不支持写入 VS Code 配置"); + return; + } + + const trimmed = configValue.trim(); + if (!trimmed) { + setVscodeError("请先填写 config.toml,再写入 VS Code 配置"); + return; + } + + const baseUrl = extractBaseUrlFromToml(trimmed); + if (!baseUrl) { + setVscodeError("未在 config.toml 中找到 base_url 字段"); + return; + } + + setIsWritingVscode(true); + try { + const success = await window.api.writeVscodeSettings(baseUrl); + if (success) { + setVscodeSuccess("已写入 VS Code 配置"); + } else { + setVscodeError("写入 VS Code 配置失败,请稍后重试"); + } + } catch (error) { + setVscodeError(`写入 VS Code 配置失败: ${String(error)}`); + } finally { + setIsWritingVscode(false); + } + }; + return (
@@ -123,7 +126,7 @@ const CodexConfigEditor: React.FC = ({