fix(sidebar): preserve primary keys on first table open

This commit is contained in:
vrustx authored and GitHub committed 2026-07-19 15:38:50 +08:00
1 parent 7b14ef3b48
commit 5289dc819d
11 files changed
+978 -21

No files matched your search

@@ -0,0 +1,22 @@
// data tab 的导航代次:每个 tab 只允许最新一次导航流程落地元数据/SQL/结果。
// 目标身份(canApplyDataTabMetadata)无法区分同表不同 whereInput 或同表连点
// 两次的请求代次,所有可复用 data tab 的导航入口(openTableTarget、侧边栏
// openData)都必须经由这里作废旧代次,否则旧请求晚返回会覆盖新导航。
const activeNavigationByTab = new Map<string, symbol>();
/** 开始一次导航流程:作废该 tab 的旧代次并返回本次 token */
export function beginDataTabNavigation(tabId: string): symbol {
const token = Symbol("data-tab-navigation");
activeNavigationByTab.set(tabId, token);
return token;
}
/** 本次导航是否仍是该 tab 的最新代次 */
export function isCurrentDataTabNavigation(tabId: string, token: symbol): boolean {
return activeNavigationByTab.get(tabId) === token;
}
/** 导航流程结束:仍持有最新代次时清掉登记,Map 只在在途导航期间持有条目 */
export function endDataTabNavigation(tabId: string, token: symbol): void {
if (activeNavigationByTab.get(tabId) === token) activeNavigationByTab.delete(tabId);
}