From a339f0fd0ce5841435d8ceeac457e2bc7bd788db Mon Sep 17 00:00:00 2001 From: Stanislav Chernov Date: Wed, 11 Mar 2026 09:52:52 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=9F=B3=E6=BA=90=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E5=8E=BB=E9=87=8D=20(#2681)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 音源导入添加去重逻辑 修复音源导入时未对重复数据进行去重的问题。现在会根据url去重,避免导入重复的音源。 Fixes lyswhut/lx-music-desktop#2649 * fix: check script content instead of name for dedup Allow duplicate source names (intentional behavior). Only reject import when script content is identical to an existing source, and report which source name conflicts. --- src/main/modules/userApi/utils.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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