Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions src/app/service/service_worker/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";

Expand Down Expand Up @@ -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<TScriptInstallReturn> {
if (!params.upsertBy) params.upsertBy = "user";
return this.doThrow("install", { ...params });
return this.doThrow("install", { ...params } satisfies TScriptInstallParam);
}

// delete(uuid: string) {
Expand Down
27 changes: 20 additions & 7 deletions src/app/service/service_worker/script.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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<TScriptInstallReturn> {
param.upsertBy = param.upsertBy || "user";
const { script, upsertBy, createtime, updatetime } = param;
// 删 storage cache
Expand All @@ -395,6 +401,13 @@ export class ScriptService {
// 执行更新逻辑
update = true;
script.selfMetadata = oldScript.selfMetadata;
// 如果已安装的脚本是由 Subscribe 安装,即使是手动更新也不会影响跟 Subscribe 关联
if (oldScript.subscribeUrl && oldScript.origin) {
// origin 和 subscribeUrl 保持不变
// @downloadURL @updateURL 随脚本最新代码而更新
script.origin = oldScript.origin;
script.subscribeUrl = oldScript.subscribeUrl;
}
}
if (script.ignoreVersion) script.ignoreVersion = "";
if (createtime) {
Expand Down
Loading