From 8c0df81998cd444dc967a597b24aa732ce3f6f57 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Wed, 4 Feb 2026 18:19:39 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20installScript=20?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/service_worker/client.ts | 18 +++++++------- src/app/service/service_worker/script.ts | 31 ++++++++++++++++++------ 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/app/service/service_worker/client.ts b/src/app/service/service_worker/client.ts index 28e98d593..0f08d825c 100644 --- a/src/app/service/service_worker/client.ts +++ b/src/app/service/service_worker/client.ts @@ -11,7 +11,13 @@ import { type FileSystemType } from "@Packages/filesystem/factory"; import { type ResourceBackup } from "@App/pkg/backup/struct"; import { type VSCodeConnect } from "../offscreen/vscode-connect"; import { type ScriptInfo } from "@App/pkg/utils/scriptInstall"; -import type { ScriptService, TCheckScriptUpdateOption, TOpenBatchUpdatePageOption } from "./script"; +import type { + ScriptService, + TCheckScriptUpdateOption, + TOpenBatchUpdatePageOption, + TScriptInstallParam, + TScriptInstallReturn, +} from "./script"; import { encodeRValue, type TKeyValuePair } from "@App/pkg/utils/message_value"; import { type TSetValuesParams } from "./value"; @@ -40,15 +46,9 @@ export class ScriptClient extends Client { return this.do<[boolean, ScriptInfo, { byWebRequest?: boolean }]>("getInstallInfo", uuid); } - install(params: { - script: Script; - code: string; - upsertBy?: InstallSource; - createtime?: number; - updatetime?: number; - }): Promise<{ update: boolean }> { + install(params: TScriptInstallParam): Promise { if (!params.upsertBy) params.upsertBy = "user"; - return this.doThrow("install", { ...params }); + return this.doThrow("install", { ...params } satisfies TScriptInstallParam); } // delete(uuid: string) { diff --git a/src/app/service/service_worker/script.ts b/src/app/service/service_worker/script.ts index 59873e093..bb17730b2 100644 --- a/src/app/service/service_worker/script.ts +++ b/src/app/service/service_worker/script.ts @@ -55,6 +55,18 @@ export type TCheckScriptUpdateOption = Partial< export type TOpenBatchUpdatePageOption = { q: string; dontCheckNow: boolean }; +export type TScriptInstallParam = { + script: Script; + code: string; + upsertBy?: InstallSource; + createtime?: number; // Import 用 + updatetime?: number; // Import 用 +}; + +export type TScriptInstallReturn = { + update: boolean; +}; + export class ScriptService { logger: Logger; scriptCodeDAO: ScriptCodeDAO = new ScriptCodeDAO(); @@ -371,13 +383,7 @@ export class ScriptService { } // 安装脚本 / 更新腳本 - async installScript(param: { - script: Script; - code: string; - upsertBy?: InstallSource; - createtime?: number; - updatetime?: number; - }) { + async installScript(param: TScriptInstallParam): Promise { param.upsertBy = param.upsertBy || "user"; const { script, upsertBy, createtime, updatetime } = param; // 删 storage cache @@ -395,6 +401,17 @@ export class ScriptService { // 执行更新逻辑 update = true; script.selfMetadata = oldScript.selfMetadata; + // 如果已安装的脚本是由 Subscribe 安装,即使是手动更新也不会影响跟 Subscribe 关联 + if (oldScript.subscribeUrl && oldScript.origin) { + script.origin = oldScript.origin; + if (oldScript.downloadUrl) { + script.downloadUrl = oldScript.downloadUrl; + } + if (oldScript.checkUpdateUrl) { + script.checkUpdateUrl = oldScript.checkUpdateUrl; + } + script.subscribeUrl = oldScript.subscribeUrl; + } } if (script.ignoreVersion) script.ignoreVersion = ""; if (createtime) { From a19b3419131f3e64562bde2297d0e3fe696ba187 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:31:07 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/service_worker/script.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/app/service/service_worker/script.ts b/src/app/service/service_worker/script.ts index bb17730b2..f986dad7e 100644 --- a/src/app/service/service_worker/script.ts +++ b/src/app/service/service_worker/script.ts @@ -403,13 +403,9 @@ export class ScriptService { script.selfMetadata = oldScript.selfMetadata; // 如果已安装的脚本是由 Subscribe 安装,即使是手动更新也不会影响跟 Subscribe 关联 if (oldScript.subscribeUrl && oldScript.origin) { + // origin 和 subscribeUrl 保持不变 + // @downloadURL @updateURL 随脚本最新代码而更新 script.origin = oldScript.origin; - if (oldScript.downloadUrl) { - script.downloadUrl = oldScript.downloadUrl; - } - if (oldScript.checkUpdateUrl) { - script.checkUpdateUrl = oldScript.checkUpdateUrl; - } script.subscribeUrl = oldScript.subscribeUrl; } }