Skip to content

Commit 5f7f3e4

Browse files
cyfung1031CodFrm
andauthored
🐛 修复和优化 ScriptEditor 问题 (#1258)
* 优化 ScriptEditor * Update ScriptEditor.tsx * Update ScriptEditor.tsx * ✨ 调整隐藏编辑框侧边栏位置 #1185 (#1254) * ✨ 调整隐藏编辑框侧边栏位置 #1185 * 图标展示反了 * 调整 `confirm_leave_page` / `script_modified_leave_confirm` 提示避免按「新增脚本」时弹出提示 * Update ScriptEditor.tsx * css 布局修正 * 统一 .focus 为 delayedEditorFocus * 🐛 修复 ScriptEditor review 问题 - 将模块级 cid 变量改为 useRef,避免多实例共享 timer - hotKeys.current.length = 0 改为 hotKeys.current = [],避免原地修改影响旧引用 - handleDeleteEditor 在 setEditors 回调内重新计算 index,修复竞态问题 - 移除冗余的 scriptList.find 查找 - 修复「袑始化」笔误为「初始化」 - 移除重复的 position: absolute 声明 --------- Co-authored-by: wangyizhi <yz@ggnb.top>
1 parent 6c308f6 commit 5f7f3e4

12 files changed

Lines changed: 303 additions & 359 deletions

File tree

src/app/service/service_worker/client.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ import { type FileSystemType } from "@Packages/filesystem/factory";
1111
import { type ResourceBackup } from "@App/pkg/backup/struct";
1212
import { type VSCodeConnect } from "../offscreen/vscode-connect";
1313
import { type ScriptInfo } from "@App/pkg/utils/scriptInstall";
14-
import type { ScriptService, TCheckScriptUpdateOption, TOpenBatchUpdatePageOption } from "./script";
14+
import type {
15+
ScriptService,
16+
TCheckScriptUpdateOption,
17+
TOpenBatchUpdatePageOption,
18+
TScriptInstallParam,
19+
TScriptInstallReturn,
20+
} from "./script";
1521
import { encodeRValue, type TKeyValuePair } from "@App/pkg/utils/message_value";
1622
import { type TSetValuesParams } from "./value";
1723

@@ -40,15 +46,9 @@ export class ScriptClient extends Client {
4046
return this.do<[boolean, ScriptInfo, { byWebRequest?: boolean }]>("getInstallInfo", uuid);
4147
}
4248

43-
install(params: {
44-
script: Script;
45-
code: string;
46-
upsertBy?: InstallSource;
47-
createtime?: number;
48-
updatetime?: number;
49-
}): Promise<{ update: boolean }> {
49+
install(params: TScriptInstallParam): Promise<TScriptInstallReturn> {
5050
if (!params.upsertBy) params.upsertBy = "user";
51-
return this.doThrow("install", { ...params });
51+
return this.doThrow("install", { ...params } satisfies TScriptInstallParam);
5252
}
5353

5454
// delete(uuid: string) {

src/app/service/service_worker/script.ts

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,19 @@ export type TCheckScriptUpdateOption = Partial<
5454

5555
export type TOpenBatchUpdatePageOption = { q: string; dontCheckNow: boolean };
5656

57+
export type TScriptInstallParam = {
58+
script: Script; // 脚本信息(包含脚本的基础元数据)
59+
code: string; // 脚本源码内容
60+
upsertBy?: InstallSource; // 安装/更新来源(用于标识脚本来源渠道)
61+
createtime?: number; // 导入时指定的创建时间(时间戳,毫秒)
62+
updatetime?: number; // 导入时指定的最后更新时间(时间戳,毫秒)
63+
};
64+
65+
export type TScriptInstallReturn = {
66+
update: boolean; // 是否为更新操作(true 表示更新,false 表示新增)
67+
updatetime: number | undefined; // 实际生效的更新时间(时间戳,毫秒)
68+
};
69+
5770
export class ScriptService {
5871
logger: Logger;
5972
scriptCodeDAO: ScriptCodeDAO = new ScriptCodeDAO();
@@ -369,14 +382,8 @@ export class ScriptService {
369382
return this.mq.publish<TInstallScript>("installScript", { script, ...options });
370383
}
371384

372-
// 安装脚本 / 更新腳本
373-
async installScript(param: {
374-
script: Script;
375-
code: string;
376-
upsertBy?: InstallSource;
377-
createtime?: number;
378-
updatetime?: number;
379-
}) {
385+
// 安装脚本 / 更新脚本
386+
async installScript(param: TScriptInstallParam): Promise<TScriptInstallReturn> {
380387
param.upsertBy = param.upsertBy || "user";
381388
const { script, upsertBy, createtime, updatetime } = param;
382389
// 删 storage cache
@@ -427,10 +434,11 @@ export class ScriptService {
427434
]);
428435

429436
// 广播一下
430-
// Runtime 會負責更新 CompiledResource
437+
// Runtime 会负责更新 CompiledResource
431438
this.publishInstallScript(script, { update, upsertBy });
432439

433-
return { update };
440+
// 传回(由后台控制的)实际更新时间,让 editor 中的script能保持正确的更新时间
441+
return { update, updatetime: script.updatetime };
434442
})
435443
.catch((e: any) => {
436444
logger.error("install error", Logger.E(e));
@@ -1144,7 +1152,7 @@ export class ScriptService {
11441152
}
11451153

11461154
isInstalled({ name, namespace }: { name: string; namespace: string }): Promise<App.IsInstalledResponse> {
1147-
// 用於 window.external
1155+
// 用于 window.external
11481156
return this.scriptDAO.findByNameAndNamespace(name, namespace).then((script) => {
11491157
if (script) {
11501158
return {

src/locales/ach-UG/translation.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,6 @@
428428
"develop_mode_guide": "crwdns8624:0crwdne8624:0",
429429
"allow_user_script_guide": "crwdns8626:0crwdne8626:0",
430430
"lower_version_browser_guide": "crwdns8628:0crwdne8628:0",
431-
"confirm_leave_page": "crwdns8634:0crwdne8634:0",
432431
"page_in_blacklist": "crwdns8636:0crwdne8636:0",
433432
"baidu_netdisk": "crwdns8638:0crwdne8638:0",
434433
"save_only_current_group": "crwdns8640:0crwdne8640:0",

src/locales/de-DE/translation.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,6 @@
438438
"allow_user_script_guide": "'Nutzerskripts zulassen' ist derzeit nicht aktiviert, daher können die Skripte nicht richtig ausgeführt werden. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/?browser={{browser}}\" target=\"black\" style=\"color: var(--color-text-1)\">👉Hier klicken, um zu erfahren, wie man es aktiviert</a>",
439439
"lower_version_browser_guide": "Ihr Browser ist zu veraltet, daher können die Skripte nicht richtig ausgeführt werden. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Hier klicken, um mehr zu erfahren</a>",
440440
"click_to_reload": "👉Zum Neuladen klicken",
441-
"confirm_leave_page": "Derzeit im Bearbeitungsstatus. Das Navigieren zu anderen Seiten führt zum Verlust des aktuellen Inhalts. Navigieren?",
442441
"page_in_blacklist": "Die aktuelle Seite ist auf der Blacklist und kann keine Skripte verwenden",
443442
"baidu_netdisk": "Baidu Netdisk",
444443
"netdisk_unbind": "{{provider}} trennen",
@@ -454,7 +453,7 @@
454453
"expression_format_error": "Ausdrucksformat-Fehler",
455454
"migration_confirm_message": "Das erneute Versuchen der Speicher-Engine-Migration wird vorhandene Daten ändern. Bitte bestätigen Sie. Details siehe: https://docs.scriptcat.org/docs/change/v0.17/",
456455
"retry_migration": "Speicher-Engine-Migration erneut versuchen",
457-
"script_modified_leave_confirm": "Skript wurde geändert. Das Verlassen führt zum Verlust der Änderungen. Fortfahren?",
456+
"script_modified_leave_confirm": "Ihre Änderungen wurden noch nicht gespeichert. Wenn Sie die Seite verlassen, gehen die Änderungen verloren. Möchten Sie die Seite wirklich verlassen?",
458457
"create_success_note": "Erstellung erfolgreich. Beachten Sie, dass Hintergrundskripte standardmäßig nicht aktiviert werden",
459458
"save_as_failed": "Speichern unter fehlgeschlagen",
460459
"save_as_success": "Speichern unter erfolgreich",

src/locales/en-US/translation.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,6 @@
438438
"allow_user_script_guide": "'Allow User Scripts' is currently not enabled, so the scripts cannot run properly. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/?browser={{browser}}\" target=\"black\" style=\"color: var(--color-text-1)\">👉tap to learn how to enable</a>",
439439
"lower_version_browser_guide": "Your browser is too outdated, so the scripts cannot run properly. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Click me to learn more</a>",
440440
"click_to_reload": "👉Click to Reload",
441-
"confirm_leave_page": "Currently editing status. Leaving this page will lose the current content. Do you want to leave?",
442441
"page_in_blacklist": "The current page is blacklisted, cannot use script",
443442
"baidu_netdisk": "BaiduNetdisk",
444443
"netdisk_unbind": "Unbind {{provider}}",
@@ -454,7 +453,7 @@
454453
"expression_format_error": "Condition expression format error",
455454
"migration_confirm_message": "Retry the migration storage engine to modify existing data. Please confirm, see:https://docs.scriptcat.org/docs/change/v0.17/.",
456455
"retry_migration": "Retry Migration Storage Engine",
457-
"script_modified_leave_confirm": "The script has been modified. Changes will be lost after leaving, continue?",
456+
"script_modified_leave_confirm": "Your changes have not been saved. If you leave, your changes will be lost. Are you sure you want to leave?",
458457
"create_success_note": "New script successfully created. Note that the background script will not be enabled by default.",
459458
"save_as_failed": "Save As Failed",
460459
"save_as_success": "Saved Successfully",

src/locales/ja-JP/translation.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,6 @@
438438
"allow_user_script_guide": "現在「ユーザー スクリプトを許可する」が有効ではないため、スクリプトは正常に動作しません。<a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/?browser={{browser}}\" target=\"black\" style=\"color: var(--color-text-1)\">👉有効化の方法はこちら</a>",
439439
"lower_version_browser_guide": "ご使用のブラウザは古すぎるため、スクリプトは正常に動作しません。<a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉詳しくはこちら</a>",
440440
"click_to_reload": "👉再読み込みする",
441-
"confirm_leave_page": "現在編集中です。他のページに移動すると現在の内容が失われます。移動しますか?",
442441
"page_in_blacklist": "現在のページはブラックリストにあり、スクリプトを使用できません",
443442
"baidu_netdisk": "百度ネットディスク",
444443
"netdisk_unbind": "{{provider}} の連携を解除",
@@ -454,7 +453,7 @@
454453
"expression_format_error": "式フォーマットエラー",
455454
"migration_confirm_message": "ストレージエンジンの移行を再試行すると既存のデータが変更されます。確認してください。詳細はこちら:https://docs.scriptcat.org/docs/change/v0.17/",
456455
"retry_migration": "ストレージエンジンの移行を再試行",
457-
"script_modified_leave_confirm": "スクリプトが変更されています。離れると変更が失われます。続行しますか",
456+
"script_modified_leave_confirm": "現在の内容はまだ保存されていません。このままページを離れると変更は失われます。よろしいですか",
458457
"create_success_note": "作成に成功しました。バックグラウンドスクリプトはデフォルトで有効になりませんのでご注意ください",
459458
"save_as_failed": "名前を付けて保存に失敗しました",
460459
"save_as_success": "名前を付けて保存に成功しました",

src/locales/ru-RU/translation.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,6 @@
438438
"allow_user_script_guide": "«Разрешить пользовательские скрипты» сейчас отключён, поэтому скрипты не могут работать корректно. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/?browser={{browser}}\" target=\"black\" style=\"color: var(--color-text-1)\">👉Нажмите, чтобы узнать, как включить</a>",
439439
"lower_version_browser_guide": "Ваш браузер слишком устарел, поэтому скрипты не могут работать корректно. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Нажмите, чтобы узнать подробнее</a>",
440440
"click_to_reload": "👉Нажмите для перезагрузки",
441-
"confirm_leave_page": "В настоящее время идет редактирование. Переход на другую страницу приведет к потере текущего содержимого. Продолжить переход?",
442441
"page_in_blacklist": "Текущая страница находится в черном списке, невозможно использовать скрипты",
443442
"baidu_netdisk": "Baidu Netdisk",
444443
"netdisk_unbind": "Отвязать {{provider}}",
@@ -454,7 +453,7 @@
454453
"expression_format_error": "Ошибка формата выражения",
455454
"migration_confirm_message": "Повторная попытка миграции движка хранения изменит существующие данные. Пожалуйста, подтвердите. Подробности см.: https://docs.scriptcat.org/docs/change/v0.17/",
456455
"retry_migration": "Повторить миграцию движка хранения",
457-
"script_modified_leave_confirm": "Скрипт был изменен. Изменения будут потеряны после выхода. Продолжить?",
456+
"script_modified_leave_confirm": "Изменения не сохранены. Если вы покинете страницу, они будут потеряны. Вы уверены, что хотите уйти?",
458457
"create_success_note": "Создание успешно. Обратите внимание, что фоновые скрипты не включаются по умолчанию",
459458
"save_as_failed": "Ошибка «Сохранить как»",
460459
"save_as_success": "«Сохранить как» успешно",

src/locales/vi-VN/translation.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,6 @@
438438
"allow_user_script_guide": "'Cho phép tập lệnh người dùng' hiện chưa được bật, nên các script không thể hoạt động đúng cách. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/?browser={{browser}}\" target=\"black\" style=\"color: var(--color-text-1)\">👉Nhấn để xem cách bật</a>",
439439
"lower_version_browser_guide": "Trình duyệt của bạn quá cũ, nên các script không thể hoạt động đúng cách. <a href=\"https://docs.scriptcat.org/en/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉Nhấn để xem thêm</a>",
440440
"click_to_reload": "👉Nhấp chuột để tải lại",
441-
"confirm_leave_page": "Hiện đang ở trạng thái chỉnh sửa. Rời khỏi trang này sẽ làm mất nội dung hiện tại. Bạn có muốn rời đi không?",
442441
"page_in_blacklist": "Trang hiện tại nằm trong danh sách đen, không thể sử dụng script",
443442
"baidu_netdisk": "Baidunetdisk",
444443
"netdisk_unbind": "Hủy liên kết {{provider}}",
@@ -454,7 +453,7 @@
454453
"expression_format_error": "Lỗi định dạng biểu thức điều kiện",
455454
"migration_confirm_message": "Thử lại công cụ lưu trữ di chuyển để sửa đổi dữ liệu hiện có. Vui lòng xác nhận, xem: https://docs.scriptcat.org/docs/change/v0.17/.",
456455
"retry_migration": "Thử lại công cụ lưu trữ di chuyển",
457-
"script_modified_leave_confirm": "Script đã được sửa đổi. Các thay đổi sẽ bị mất sau khi rời đi, tiếp tục?",
456+
"script_modified_leave_confirm": "Nội dung hiện chưa được lưu. Nếu rời khỏi trang, các thay đổi sẽ bị mất. Bạn có chắc chắn muốn rời đi không?",
458457
"create_success_note": "Script mới được tạo thành công. Lưu ý rằng script nền sẽ không được bật theo mặc định.",
459458
"save_as_failed": "Lưu thành thất bại",
460459
"save_as_success": "Lưu thành công",

src/locales/zh-CN/translation.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,6 @@
438438
"allow_user_script_guide": "当前未启用“允许运行用户脚本”,脚本无法正常运行。<a href=\"https://docs.scriptcat.org/docs/use/open-dev/?browser={{browser}}\" target=\"black\" style=\"color: var(--color-text-1)\">👉点击查看启用方法</a>",
439439
"lower_version_browser_guide": "您的浏览器版本过低,脚本无法正常运行。<a href=\"https://docs.scriptcat.org/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉点击了解更多</a>",
440440
"click_to_reload": "👉点击重新加载",
441-
"confirm_leave_page": "当前正在编辑状态,跳转其它页面将会丢失当前内容,是否跳转?",
442441
"page_in_blacklist": "当前页面在黑名单中,无法使用脚本",
443442
"baidu_netdisk": "百度网盘",
444443
"netdisk_unbind": "解除绑定 {{provider}}",
@@ -454,7 +453,7 @@
454453
"expression_format_error": "表达式格式错误",
455454
"migration_confirm_message": "重试迁移储存引擎会对现有数据造成修改,请确认,详情请看:https://docs.scriptcat.org/docs/change/v0.17/",
456455
"retry_migration": "重试迁移储存引擎",
457-
"script_modified_leave_confirm": "脚本已修改, 离开后会丢失修改, 是否继续?",
456+
"script_modified_leave_confirm": "当前内容尚未保存,离开后更改将丢失,确定要离开吗?",
458457
"create_success_note": "新建成功,请注意后台脚本不会默认开启",
459458
"save_as_failed": "另存为失败",
460459
"save_as_success": "另存为成功",

src/locales/zh-TW/translation.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,6 @@
438438
"allow_user_script_guide": "目前尚未啟用「允許使用者指令碼」,腳本無法正常執行。<a href=\"https://docs.scriptcat.org/docs/use/open-dev/?browser={{browser}}\" target=\"black\" style=\"color: var(--color-text-1)\">👉點此查看啟用方式</a>",
439439
"lower_version_browser_guide": "您的瀏覽器版本過舊,腳本無法正常執行。<a href=\"https://docs.scriptcat.org/docs/use/open-dev/\" target=\"black\" style=\"color: var(--color-text-1)\">👉點擊了解更多</a>",
440440
"click_to_reload": "👉點擊重新載入",
441-
"confirm_leave_page": "目前正在編輯狀態,跳轉其他頁面將會遺失目前內容,是否跳轉?",
442441
"page_in_blacklist": "目前頁面在黑名單中,無法使用腳本",
443442
"baidu_netdisk": "百度網盤",
444443
"netdisk_unbind": "解除綁定 {{provider}}",
@@ -454,7 +453,7 @@
454453
"expression_format_error": "表達式格式錯誤",
455454
"migration_confirm_message": "重試遷移儲存引擎會對現有資料造成修改,請確認,詳情請參閱:https://docs.scriptcat.org/docs/change/v0.17/",
456455
"retry_migration": "重試遷移儲存引擎",
457-
"script_modified_leave_confirm": "腳本已修改,離開後會遺失修改,是否繼續",
456+
"script_modified_leave_confirm": "目前內容尚未儲存,離開後變更將會遺失,確定要離開嗎",
458457
"create_success_note": "新建成功,請注意背景腳本不會預設開啟",
459458
"save_as_failed": "另存新檔失敗",
460459
"save_as_success": "另存新檔成功",

0 commit comments

Comments
 (0)