From 497e42cb37aa0f5d6a217d850f5dc47d9e47edd2 Mon Sep 17 00:00:00 2001 From: Baobhan Sith <80159437+Heavrnl@users.noreply.github.com> Date: Sat, 10 May 2025 09:00:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E6=8C=82=E8=B5=B7?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=8B=E4=BC=9A=E8=AF=9D=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E9=A2=9C=E8=89=B2=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/TerminalTabBar.vue | 1 + packages/frontend/src/stores/session/actions/sessionActions.ts | 1 + .../frontend/src/stores/session/actions/sshSuspendActions.ts | 3 +++ packages/frontend/src/stores/session/getters.ts | 1 + packages/frontend/src/stores/session/types.ts | 1 + 5 files changed, 7 insertions(+) diff --git a/packages/frontend/src/components/TerminalTabBar.vue b/packages/frontend/src/components/TerminalTabBar.vue index a6177c0..3023b14 100644 --- a/packages/frontend/src/components/TerminalTabBar.vue +++ b/packages/frontend/src/components/TerminalTabBar.vue @@ -353,6 +353,7 @@ animation="150" > diff --git a/packages/frontend/src/stores/session/actions/sessionActions.ts b/packages/frontend/src/stores/session/actions/sessionActions.ts index a79fae9..744d22c 100644 --- a/packages/frontend/src/stores/session/actions/sessionActions.ts +++ b/packages/frontend/src/stores/session/actions/sessionActions.ts @@ -81,6 +81,7 @@ export const openNewSession = ( editorTabs: ref([]), activeEditorTabId: ref(null), commandInputContent: ref(''), + isMarkedForSuspend: false, // +++ 初始化 isMarkedForSuspend状态 +++ disposables: [], // 初始化 disposables 数组 }; diff --git a/packages/frontend/src/stores/session/actions/sshSuspendActions.ts b/packages/frontend/src/stores/session/actions/sshSuspendActions.ts index a806d02..43c41c4 100644 --- a/packages/frontend/src/stores/session/actions/sshSuspendActions.ts +++ b/packages/frontend/src/stores/session/actions/sshSuspendActions.ts @@ -364,6 +364,7 @@ const handleSshMarkedForSuspendAck = (payload: SshMarkedForSuspendAckPayload): v const session = sessions.value.get(payload.sessionId); if (session) { session.isMarkedForSuspend = true; // 假设 SessionState 有此字段 + sessions.value = new Map(sessions.value); // 强制更新 Map } } else { @@ -375,6 +376,7 @@ const handleSshMarkedForSuspendAck = (payload: SshMarkedForSuspendAckPayload): v const session = sessions.value.get(payload.sessionId); if (session) { session.isMarkedForSuspend = false; // 确保标记被清除 + sessions.value = new Map(sessions.value); // 强制更新 Map } } }; @@ -387,6 +389,7 @@ const handleSshUnmarkedForSuspendAck = (payload: SshUnmarkedForSuspendAckPayload if (payload.success) { if (session) { session.isMarkedForSuspend = false; + sessions.value = new Map(sessions.value); // 强制更新 Map } uiNotificationsStore.addNotification({ type: 'success', diff --git a/packages/frontend/src/stores/session/getters.ts b/packages/frontend/src/stores/session/getters.ts index b916f15..d4f53b9 100644 --- a/packages/frontend/src/stores/session/getters.ts +++ b/packages/frontend/src/stores/session/getters.ts @@ -17,6 +17,7 @@ export const sessionTabsWithStatus = computed((): SessionTabInfoWithStatus[] => sessionId: session.sessionId, connectionName: session.connectionName, status: session.wsManager.connectionStatus.value, // 从 wsManager 获取状态 + isMarkedForSuspend: session.isMarkedForSuspend, // +++ 添加 isMarkedForSuspend 状态 +++ })); }); diff --git a/packages/frontend/src/stores/session/types.ts b/packages/frontend/src/stores/session/types.ts index 9102f42..eb84dae 100644 --- a/packages/frontend/src/stores/session/types.ts +++ b/packages/frontend/src/stores/session/types.ts @@ -52,4 +52,5 @@ export interface SessionTabInfoWithStatus { sessionId: string; connectionName: string; status: WsConnectionStatus; // 添加状态字段 + isMarkedForSuspend?: boolean; // +++ 新增:用于UI指示会话是否已标记待挂起 +++ } \ No newline at end of file