fix(sidebar): preserve primary keys on first table open
This commit is contained in:
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);
|
||||
}
|
||||
Reference in new issue
Block a user