feat: 添加标签管理模态框
This commit is contained in:
@@ -4,14 +4,14 @@ import { sessions, suspendedSshSessions, isLoadingSuspendedSessions, activeSessi
|
||||
import type {
|
||||
MessagePayload,
|
||||
SshMarkForSuspendReqMessage,
|
||||
SshUnmarkForSuspendReqMessage, // +++ 新增导入 +++
|
||||
SshUnmarkForSuspendReqMessage,
|
||||
SshSuspendResumeReqMessage,
|
||||
SshSuspendTerminateReqMessage,
|
||||
SshSuspendRemoveEntryReqMessage,
|
||||
// SshSuspendEditNameReqMessage, // Removed, using HTTP API
|
||||
// S2C Payloads
|
||||
SshMarkedForSuspendAckPayload,
|
||||
SshUnmarkedForSuspendAckPayload, // +++ 新增导入 +++
|
||||
SshUnmarkedForSuspendAckPayload,
|
||||
SshSuspendListResponsePayload,
|
||||
SshSuspendResumedNotifPayload,
|
||||
SshOutputCachedChunkPayload,
|
||||
@@ -27,7 +27,7 @@ import { useUiNotificationsStore } from '../../uiNotifications.store'; // 用于
|
||||
import type { SuspendedSshSession } from '../../../types/ssh-suspend.types'; // 路径: packages/frontend/src/types/ssh-suspend.types.ts
|
||||
import i18n from '../../../i18n'; // 直接导入 i18n 实例
|
||||
import type { ComposerTranslation } from 'vue-i18n'; // 导入 ComposerTranslation 类型
|
||||
import apiClient from '../../../utils/apiClient'; // +++ 新增:导入 apiClient +++
|
||||
import apiClient from '../../../utils/apiClient'; // +++ 导入 apiClient +++
|
||||
|
||||
const t: ComposerTranslation = i18n.global.t; // 从全局 i18n 实例获取 t 函数并显式注解类型
|
||||
|
||||
@@ -721,7 +721,7 @@ export const registerSshSuspendHandlers = (wsManager: WsManagerInstance): void =
|
||||
// 但通常这些处理器会随 wsManager 实例的生命周期一起存在。
|
||||
// wsManager.onMessage('SSH_SUSPEND_STARTED_RESP', (p: MessagePayload) => handleSshSuspendStartedResp(p as SshSuspendStartedRespPayload));
|
||||
wsManager.onMessage('SSH_MARKED_FOR_SUSPEND_ACK', (p: MessagePayload) => handleSshMarkedForSuspendAck(p as SshMarkedForSuspendAckPayload));
|
||||
wsManager.onMessage('SSH_UNMARKED_FOR_SUSPEND_ACK', (p: MessagePayload) => handleSshUnmarkedForSuspendAck(p as SshUnmarkedForSuspendAckPayload)); // +++ 新增处理器 +++
|
||||
wsManager.onMessage('SSH_UNMARKED_FOR_SUSPEND_ACK', (p: MessagePayload) => handleSshUnmarkedForSuspendAck(p as SshUnmarkedForSuspendAckPayload));
|
||||
wsManager.onMessage('SSH_SUSPEND_LIST_RESPONSE', (p: MessagePayload) => handleSshSuspendListResponse(p as SshSuspendListResponsePayload));
|
||||
wsManager.onMessage('SSH_SUSPEND_RESUMED_NOTIF', (p: MessagePayload) => handleSshSuspendResumedNotif(p as SshSuspendResumedNotifPayload));
|
||||
wsManager.onMessage('SSH_OUTPUT_CACHED_CHUNK', (p: MessagePayload) => handleSshOutputCachedChunk(p as SshOutputCachedChunkPayload));
|
||||
|
||||
@@ -36,15 +36,15 @@ export interface SessionState {
|
||||
terminalManager: SshTerminalInstance;
|
||||
statusMonitorManager: StatusMonitorInstance;
|
||||
dockerManager: DockerManagerInstance; // 现在应该可以找到 DockerManagerInstance
|
||||
// --- 新增:独立编辑器状态 ---
|
||||
// --- 独立编辑器状态 ---
|
||||
editorTabs: Ref<FileTab[]>; // 编辑器标签页列表
|
||||
activeEditorTabId: Ref<string | null>; // 当前活动的编辑器标签页 ID
|
||||
// --- 新增:命令输入框内容 ---
|
||||
// --- 命令输入框内容 ---
|
||||
commandInputContent: Ref<string>; // 当前会话的命令输入框内容
|
||||
isResuming?: boolean; // 新增:标记会话是否正在从挂起状态恢复
|
||||
isMarkedForSuspend?: boolean; // +++ 新增:标记会话是否已被用户请求标记为待挂起 +++
|
||||
disposables?: (() => void)[]; // 新增:用于存储清理函数,例如取消注册消息处理器
|
||||
pendingOutput?: string[]; // 新增:用于暂存恢复会话时,在终端实例准备好之前收到的输出
|
||||
isResuming?: boolean; // 标记会话是否正在从挂起状态恢复
|
||||
isMarkedForSuspend?: boolean; // +++ 标记会话是否已被用户请求标记为待挂起 +++
|
||||
disposables?: (() => void)[]; // 用于存储清理函数,例如取消注册消息处理器
|
||||
pendingOutput?: string[]; // 用于暂存恢复会话时,在终端实例准备好之前收到的输出
|
||||
}
|
||||
|
||||
// 为标签栏定义包含状态的类型
|
||||
@@ -52,5 +52,5 @@ export interface SessionTabInfoWithStatus {
|
||||
sessionId: string;
|
||||
connectionName: string;
|
||||
status: WsConnectionStatus; // 添加状态字段
|
||||
isMarkedForSuspend?: boolean; // +++ 新增:用于UI指示会话是否已标记待挂起 +++
|
||||
isMarkedForSuspend?: boolean; // +++ 用于UI指示会话是否已标记待挂起 +++
|
||||
}
|
||||
Reference in New Issue
Block a user