diff --git a/src/components/ProviderForm/CodexConfigEditor.tsx b/src/components/ProviderForm/CodexConfigEditor.tsx index f354b19..ce5e617 100644 --- a/src/components/ProviderForm/CodexConfigEditor.tsx +++ b/src/components/ProviderForm/CodexConfigEditor.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useRef } from "react"; import { X, Save } from "lucide-react"; @@ -92,8 +92,11 @@ const CodexConfigEditor: React.FC = ({ const [templateWebsiteUrl, setTemplateWebsiteUrl] = useState(""); const [templateModelName, setTemplateModelName] = useState("gpt-5-codex"); + const apiKeyInputRef = useRef(null); - const [templateError, setTemplateError] = useState(""); + const baseUrlInputRef = useRef(null); + + const modelNameInputRef = useRef(null); // 移除自动填充逻辑,因为现在在点击自定义按钮时就已经填充 @@ -125,19 +128,31 @@ const CodexConfigEditor: React.FC = ({ setIsCommonConfigModalOpen(false); }; + const closeTemplateModal = () => { + setIsTemplateModalOpen(false); + }; + const applyTemplate = () => { + const requiredInputs = [ + apiKeyInputRef.current, + baseUrlInputRef.current, + modelNameInputRef.current, + ]; + + for (const input of requiredInputs) { + if (input && !input.checkValidity()) { + input.reportValidity(); + input.focus(); + return; + } + } + const trimmedKey = templateApiKey.trim(); const trimmedBaseUrl = templateBaseUrl.trim(); const trimmedModel = templateModelName.trim(); - if (!trimmedKey || !trimmedBaseUrl || !trimmedModel) { - setTemplateError("请填写 API 密钥、API 基础地址和模型名称"); - - return; - } - const auth = generateThirdPartyAuth(trimmedKey); const config = generateThirdPartyConfig( @@ -170,9 +185,7 @@ const CodexConfigEditor: React.FC = ({ setTemplateModelName("gpt-5-codex"); - setTemplateError(""); - - setIsTemplateModalOpen(false); + closeTemplateModal(); }; const handleTemplateInputKeyDown = ( @@ -310,7 +323,7 @@ const CodexConfigEditor: React.FC = ({ className="fixed inset-0 z-50 flex items-center justify-center" onMouseDown={(e) => { if (e.target === e.currentTarget) { - setIsTemplateModalOpen(false); + closeTemplateModal(); } }} > @@ -329,7 +342,7 @@ const CodexConfigEditor: React.FC = ({