Skip to content
Merged
Changes from 2 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
25 changes: 25 additions & 0 deletions src/app/service/service_worker/script.ts
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,31 @@ export class ScriptService {
if (updatetime) {
script.updatetime = updatetime;
}
// 拖拉安装等同本地创建脚本
if (script.origin?.startsWith("file:///*from-local*/")) {
script.origin = "";
script.originDomain = "";
script.downloadUrl = "";
script.checkUpdateUrl = "";
}
// 处理 ScriptCat 旧版本进行安装时的 origin 错误 ( 1.0.0-beta.2 ~ 1.4.x - 自 commit d9b0eeede1a8b114f79a43fade99d825323c63f6 @ 2025.07.23 )
if (oldScript?.origin?.startsWith("file:///*from-local*/") || oldScript?.origin?.startsWith("file://-/")) {
oldScript.origin = "";
oldScript.originDomain = "";
oldScript.downloadUrl = "";
oldScript.checkUpdateUrl = "";
}
Copy link

Copilot AI Apr 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里对 oldScript 的 origin/downloadUrl/checkUpdateUrl 做“旧版本错误”清理是在后面才执行的,但 installScript 前面已经可能把 oldScript.origin 复制到 script(例如 subscribeUrl 分支)。如果 oldScript.origin 已经是错误的 file://-/...,就会被继续保存到新 script,导致本次修复失效。建议在任何读取/复制 oldScript.origin 之前先做统一的 origin 归一化,并且同样对 script.origin 处理 file://-/ 这种旧前缀。

Copilot uses AI. Check for mistakes.
// 现存的脚本:以最初的安装(即creationtime)为标准
if (oldScript && script.createtime === oldScript.createtime) {
// 如果最初是从网络安装,之后拖拉安装本机档案,则保留origin资讯。用于更新检查。
// 如果本机安装的版本号较低,则会在下次更新检查时提醒有更新。那个时候,用户可以选择更新至网络上最新版本,或忽略并保留本机版本
if (oldScript && oldScript.origin && !script.origin) {
Copy link

Copilot AI Apr 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

在 if (oldScript && script.createtime === oldScript.createtime) 这个块里,内部又重复判断了一次 oldScript(if (oldScript && oldScript.origin && !script.origin))。这里的 oldScript && 可以去掉,减少冗余并提升可读性。

Suggested change
if (oldScript && oldScript.origin && !script.origin) {
if (oldScript.origin && !script.origin) {

Copilot uses AI. Check for mistakes.
script.origin = oldScript.origin;
script.originDomain = oldScript.originDomain;
script.downloadUrl = oldScript.downloadUrl;
script.checkUpdateUrl = oldScript.checkUpdateUrl;
}
}
return this.scriptDAO
.save(script)
.then(async () => {
Expand Down
Loading