🔧 fix(App/handleNewQuery): 修复新建查询默认数据库选择错误

- 验证当前 tab 的 connectionId 仍存在于 connections 列表中才复用上下文
- activeContext 作为次优先回退,同样验证 connectionId 有效性
- 避免关闭连接 A 后新建查询仍默认选中数据库 A 的问题
- refs #241
This commit is contained in:
杨国锋
2026-03-18 21:24:45 +08:00
parent ecee206304
commit 8efa7e2de6

View File

@@ -911,18 +911,24 @@ function App() {
}, []); }, []);
const handleNewQuery = () => { const handleNewQuery = () => {
let connId = activeContext?.connectionId || ''; let connId = '';
let db = activeContext?.dbName || ''; let db = '';
// Priority: Active Tab Context > Sidebar Selection // Priority: Active Tab Context (if connection still valid) > Sidebar Selection (activeContext)
if (activeTabId) { if (activeTabId) {
const currentTab = tabs.find(t => t.id === activeTabId); const currentTab = tabs.find(t => t.id === activeTabId);
if (currentTab && currentTab.connectionId) { if (currentTab && currentTab.connectionId && connections.some(c => c.id === currentTab.connectionId)) {
connId = currentTab.connectionId; connId = currentTab.connectionId;
db = currentTab.dbName || ''; db = currentTab.dbName || '';
} }
} }
// Fallback: Sidebar selection context (only if connection still valid)
if (!connId && activeContext?.connectionId && connections.some(c => c.id === activeContext.connectionId)) {
connId = activeContext.connectionId;
db = activeContext.dbName || '';
}
addTab({ addTab({
id: `query-${Date.now()}`, id: `query-${Date.now()}`,
title: '新建查询', title: '新建查询',