feat(editor): handle tabs after connection disconnect

This commit is contained in:
javalover123 authored and GitHub committed 2026-09-20 01:12:21 +08:00
1 parent 3cb1faf1c6
commit 28cc1b9768
31 files changed
+1137 -60

No files matched your search

@@ -0,0 +1,11 @@
import { describe, expect, it } from "vitest";
import { deletedConnectionTabKeepMode } from "@/lib/tabs/deletedConnectionTabs";
describe("deletedConnectionTabKeepMode", () => {
it("maps each delete-time tab handling mode to its keep scope", () => {
expect(deletedConnectionTabKeepMode("close-tabs")).toBe("none");
expect(deletedConnectionTabKeepMode("keep-sql-tabs")).toBe("sql");
expect(deletedConnectionTabKeepMode("keep-pinned-sql-tabs")).toBe("pinned-sql");
expect(deletedConnectionTabKeepMode("keep-all-tabs")).toBe("all");
});
});
@@ -0,0 +1,21 @@
import type { DeleteConnectionTabHandlingMode } from "@/stores/settingsStore";
/**
* 删除连接时对已打开页签的保留范围。
*
* 与「断开连接」不同,删除后连接配置已从磁盘移除、无法再重连,因此被保留下来的
* SQL 页签只是草稿工作区;它们会记录原连接名,等新建同名连接时再重新绑定。
*
* - `none`:关闭全部页签
* - `sql`:保留全部 SQL 页签(清空结果),其余关闭
* - `pinned-sql`:只保留固定的 SQL 页签(清空结果),其余关闭
* - `all`:不关闭任何页签,保留 SQL 文本与当前结果,只回滚事务
*/
export type DeletedConnectionTabKeepMode = "none" | "sql" | "pinned-sql" | "all";
export function deletedConnectionTabKeepMode(mode: DeleteConnectionTabHandlingMode): DeletedConnectionTabKeepMode {
if (mode === "keep-sql-tabs") return "sql";
if (mode === "keep-pinned-sql-tabs") return "pinned-sql";
if (mode === "keep-all-tabs") return "all";
return "none";
}