From 319d8e25d8df26f7fb291cae480f0af7bc7ef750 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:23:35 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20Subscribe=20=E7=9A=84?= =?UTF-8?q?=20Script=20=E7=9A=84=20=E9=9D=99=E9=BB=98=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/service_worker/script.ts | 9 ++++++++- src/pkg/utils/utils.ts | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/app/service/service_worker/script.ts b/src/app/service/service_worker/script.ts index 59873e093..29cb85aa5 100644 --- a/src/app/service/service_worker/script.ts +++ b/src/app/service/service_worker/script.ts @@ -48,6 +48,7 @@ import { getSimilarityScore, ScriptUpdateCheck } from "./script_update_check"; import { LocalStorageDAO } from "@App/app/repo/localStorage"; import { CompiledResourceDAO } from "@App/app/repo/resource"; import { initRegularUpdateCheck } from "./regular_updatecheck"; +import { SubscribeDAO } from "@App/app/repo/subscribe"; export type TCheckScriptUpdateOption = Partial< { checkType: "user"; noUpdateCheck?: number } | ({ checkType: "system" } & Record) @@ -58,6 +59,7 @@ export type TOpenBatchUpdatePageOption = { q: string; dontCheckNow: boolean }; export class ScriptService { logger: Logger; scriptCodeDAO: ScriptCodeDAO = new ScriptCodeDAO(); + subscribeDAO: SubscribeDAO = new SubscribeDAO(); localStorageDAO: LocalStorageDAO = new LocalStorageDAO(); compiledResourceDAO: CompiledResourceDAO = new CompiledResourceDAO(); private readonly scriptUpdateCheck; @@ -841,7 +843,12 @@ export class ScriptService { if (update && (await this.systemConfig.getSilenceUpdateScript())) { try { const { oldScript, script } = await prepareScriptByCode(code, url, uuid); - if (checkSilenceUpdate(oldScript!.metadata, script.metadata)) { + let subscribeMetadata: SCMetadata | undefined; + if (oldScript?.subscribeUrl && oldScript.origin) { + const subscribe = await this.subscribeDAO.get(oldScript.subscribeUrl); + subscribeMetadata = subscribe?.metadata; + } + if (checkSilenceUpdate(oldScript!.metadata, script.metadata, subscribeMetadata)) { logger?.info("silence update script"); await this.installScript({ script, diff --git a/src/pkg/utils/utils.ts b/src/pkg/utils/utils.ts index 350913a6b..b2bc43ef7 100644 --- a/src/pkg/utils/utils.ts +++ b/src/pkg/utils/utils.ts @@ -154,12 +154,14 @@ export async function openInCurrentTab(url: string, tabId?: number) { } // 检查订阅规则是否改变,是否能够静默更新 -export function checkSilenceUpdate(oldMeta: SCMetadata, newMeta: SCMetadata): boolean { +export function checkSilenceUpdate(oldMeta: SCMetadata, newMeta: SCMetadata, subscribeMetadata?: SCMetadata | undefined): boolean { // 判断connect是否改变 const oldConnect = new Set(oldMeta.connect || []); const newConnect = new Set(newMeta.connect || []); + const subsConnect = subscribeMetadata ? new Set(subscribeMetadata?.connect || []) : null; // 老的里面没有新的就需要用户确认了 for (const key of newConnect) { + if (subsConnect?.has(key)) continue; // 如果有 Subscribe 而且它的 @connect 包含新的Script @connect, 则不用理会是否新增。 if (!oldConnect.has(key)) { return false; } From 630088ade61dbbc2be51ce0a5342c42ede9f65a3 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:32:27 +0900 Subject: [PATCH 2/2] lint --- src/pkg/utils/utils.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pkg/utils/utils.ts b/src/pkg/utils/utils.ts index b2bc43ef7..96827599a 100644 --- a/src/pkg/utils/utils.ts +++ b/src/pkg/utils/utils.ts @@ -154,7 +154,11 @@ export async function openInCurrentTab(url: string, tabId?: number) { } // 检查订阅规则是否改变,是否能够静默更新 -export function checkSilenceUpdate(oldMeta: SCMetadata, newMeta: SCMetadata, subscribeMetadata?: SCMetadata | undefined): boolean { +export function checkSilenceUpdate( + oldMeta: SCMetadata, + newMeta: SCMetadata, + subscribeMetadata?: SCMetadata | undefined +): boolean { // 判断connect是否改变 const oldConnect = new Set(oldMeta.connect || []); const newConnect = new Set(newMeta.connect || []);