diff --git a/src/main/modules/userApi/utils.ts b/src/main/modules/userApi/utils.ts index dedaa6ae..6a56e122 100644 --- a/src/main/modules/userApi/utils.ts +++ b/src/main/modules/userApi/utils.ts @@ -109,14 +109,20 @@ const inflateScript = async(script: string) => new Promise((resolve, rej }) export const importApi = async(scriptRaw: string): Promise => { let scriptInfo = parseScriptInfo(scriptRaw) + const script = await deflateScript(scriptRaw) + userApis ??= [] + for (const api of userApis) { + const existingScript = scripts.get(api.id) + if (existingScript === script) { + throw new Error(`导入失败,脚本内容与已有的源「${api.name}」相同`) + } + } const apiInfo = { id: `user_api_${Math.random().toString().substring(2, 5)}_${Date.now()}`, ...scriptInfo, allowShowUpdateAlert: true, } - userApis ??= [] userApis.push(apiInfo) - const script = await deflateScript(scriptRaw) scripts.set(apiInfo.id, script) saveData() return apiInfo