diff --git a/src/components/UsageScriptModal.tsx b/src/components/UsageScriptModal.tsx index fda291b..36e4046 100644 --- a/src/components/UsageScriptModal.tsx +++ b/src/components/UsageScriptModal.tsx @@ -98,6 +98,18 @@ const UsageScriptModal: React.FC = ({ const [testing, setTesting] = useState(false); + // 跟踪当前选择的模板类型(用于控制高级配置的显示) + // 初始化:如果已有 accessToken 或 userId,说明是 NewAPI 模板 + const [selectedTemplate, setSelectedTemplate] = useState( + () => { + const existingScript = provider.meta?.usage_script; + if (existingScript?.accessToken || existingScript?.userId) { + return "NewAPI"; + } + return null; + } + ); + const handleSave = () => { // 验证脚本格式 if (script.enabled && !script.code.trim()) { @@ -135,7 +147,7 @@ const UsageScriptModal: React.FC = ({ `${t("usageScript.testFailed")}: ${result.error || t("endpointTest.noResult")}`, { duration: 5000, - }, + } ); } } catch (error: any) { @@ -143,7 +155,7 @@ const UsageScriptModal: React.FC = ({ `${t("usageScript.testFailed")}: ${error?.message || t("common.unknown")}`, { duration: 5000, - }, + } ); } finally { setTesting(false); @@ -167,7 +179,7 @@ const UsageScriptModal: React.FC = ({ `${t("usageScript.formatFailed")}: ${error?.message || t("jsonEditor.invalidJson")}`, { duration: 3000, - }, + } ); } }; @@ -175,10 +187,24 @@ const UsageScriptModal: React.FC = ({ const handleUsePreset = (presetName: string) => { const preset = PRESET_TEMPLATES[presetName]; if (preset) { - setScript({ ...script, code: preset }); + // 如果选择的不是 NewAPI 模板,清空高级配置字段 + if (presetName !== "NewAPI") { + setScript({ + ...script, + code: preset, + accessToken: undefined, + userId: undefined, + }); + } else { + setScript({ ...script, code: preset }); + } + setSelectedTemplate(presetName); // 记录选择的模板 } }; + // 判断是否应该显示高级配置(仅 NewAPI 模板需要) + const shouldShowAdvancedConfig = selectedTemplate === "NewAPI"; + return ( !open && onClose()}> @@ -225,6 +251,41 @@ const UsageScriptModal: React.FC = ({ + {/* 高级配置:Access Token 和 User ID(仅 NewAPI 模板显示) */} + {shouldShowAdvancedConfig && ( +
+ + + +
+ )} + {/* 脚本编辑器 */}
- {/* 高级配置:Access Token 和 User ID */} -
-

- 🔑 高级配置(可选,用于需要登录的接口) -

- - - - - -

- 💡 在脚本中使用:{`{{accessToken}}`} 和 {`{{userId}}`} -

-
- {/* 脚本说明 */}