From 9ec75c0fdd6d01348b73909e2d91ae00ebdc2f87 Mon Sep 17 00:00:00 2001
From: Baobhan Sith <80159437+Heavrnl@users.noreply.github.com>
Date: Sat, 10 May 2025 13:15:54 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8?=
=?UTF-8?q?=E4=BA=8B=E4=BB=B6=E6=80=BB=E7=BA=BF=EF=BC=8C=E4=BF=AE=E5=A4=8D?=
=?UTF-8?q?=E6=A8=A1=E6=80=81=E6=A1=86=E4=B8=8D=E8=87=AA=E5=8A=A8=E6=B6=88?=
=?UTF-8?q?=E5=A4=B1=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../frontend/src/components/QuickCommandsModal.vue | 13 ++++++++++++-
packages/frontend/src/components/TerminalTabBar.vue | 10 ++++++++--
packages/frontend/src/views/WorkspaceView.vue | 6 ++++--
3 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/packages/frontend/src/components/QuickCommandsModal.vue b/packages/frontend/src/components/QuickCommandsModal.vue
index ab9558f..69c0160 100644
--- a/packages/frontend/src/components/QuickCommandsModal.vue
+++ b/packages/frontend/src/components/QuickCommandsModal.vue
@@ -1,6 +1,7 @@
diff --git a/packages/frontend/src/components/TerminalTabBar.vue b/packages/frontend/src/components/TerminalTabBar.vue
index 3023b14..d0553bf 100644
--- a/packages/frontend/src/components/TerminalTabBar.vue
+++ b/packages/frontend/src/components/TerminalTabBar.vue
@@ -9,13 +9,14 @@ import TabBarContextMenu from './TabBarContextMenu.vue';
import { useSessionStore } from '../stores/session.store';
import { useConnectionsStore, type ConnectionInfo } from '../stores/connections.store';
import { useLayoutStore, type PaneName } from '../stores/layout.store';
-import { useWorkspaceEventEmitter } from '../composables/workspaceEvents'; // +++ 新增导入 +++
+import { useWorkspaceEventEmitter, useWorkspaceEventSubscriber } from '../composables/workspaceEvents'; // +++ 新增导入 +++
import type { SessionTabInfoWithStatus } from '../stores/session/types'; // 路径修正
const { t } = useI18n(); // 初始化 i18n
const emitWorkspaceEvent = useWorkspaceEventEmitter(); // +++ 获取事件发射器 +++
+const onWorkspaceEvent = useWorkspaceEventSubscriber(); // +++ 获取事件订阅器 +++
const layoutStore = useLayoutStore(); // 初始化布局 store
const connectionsStore = useConnectionsStore();
const { isHeaderVisible } = storeToRefs(layoutStore); // 从 layout store 获取主导航栏可见状态
@@ -272,8 +273,13 @@ onMounted(() => {
isWorkspaceRoute.value = route.path === '/workspace';
if (isWorkspaceRoute.value) {
// 初始加载时,不需要在这里加载 Header 状态,App.vue 会处理
- console.log('[TabBar] Mounted on /workspace route. Header toggle button is now active.');
+ console.log('[TabBar] Mounted on /workspace route. Header toggle button is now active.');
}
+ // 监听连接事件
+ onWorkspaceEvent('connection:connect', (payload) => {
+ console.log('[TabBar] Received connection:connect event:', payload);
+ handlePopupConnect(payload.connectionId);
+ });
});
// +++ 组件卸载前移除全局监听器 +++
diff --git a/packages/frontend/src/views/WorkspaceView.vue b/packages/frontend/src/views/WorkspaceView.vue
index 050ec05..ae2afb3 100644
--- a/packages/frontend/src/views/WorkspaceView.vue
+++ b/packages/frontend/src/views/WorkspaceView.vue
@@ -135,7 +135,8 @@ onMounted(() => {
subscribeToWorkspaceEvents('editor:closeTabsToRight', (payload) => handleCloseEditorTabsToRight(payload.tabId));
subscribeToWorkspaceEvents('editor:closeTabsToLeft', (payload) => handleCloseEditorTabsToLeft(payload.tabId));
- subscribeToWorkspaceEvents('connection:connect', (payload) => handleConnectRequest(payload.connectionId));
+ // 移除对 connection:connect 事件的监听,以避免重复创建会话
+ // subscribeToWorkspaceEvents('connection:connect', (payload) => handleConnectRequest(payload.connectionId));
subscribeToWorkspaceEvents('connection:openNewSession', (payload) => handleOpenNewSession(payload.connectionId));
subscribeToWorkspaceEvents('connection:requestAdd', handleRequestAddConnection);
subscribeToWorkspaceEvents('connection:requestEdit', (payload) => handleRequestEditConnection(payload.connectionInfo));
@@ -176,7 +177,8 @@ onBeforeUnmount(() => {
unsubscribeFromWorkspaceEvents('editor:closeTabsToRight', (payload) => handleCloseEditorTabsToRight(payload.tabId));
unsubscribeFromWorkspaceEvents('editor:closeTabsToLeft', (payload) => handleCloseEditorTabsToLeft(payload.tabId));
- unsubscribeFromWorkspaceEvents('connection:connect', (payload) => handleConnectRequest(payload.connectionId));
+ // 移除对 connection:connect 事件的监听,以避免重复创建会话
+ // unsubscribeFromWorkspaceEvents('connection:connect', (payload) => handleConnectRequest(payload.connectionId));
unsubscribeFromWorkspaceEvents('connection:openNewSession', (payload) => handleOpenNewSession(payload.connectionId));
unsubscribeFromWorkspaceEvents('connection:requestAdd', handleRequestAddConnection);
unsubscribeFromWorkspaceEvents('connection:requestEdit', (payload) => handleRequestEditConnection(payload.connectionInfo));