refactor: 重构终端连接流程.

This commit is contained in:
lijiahangmax
2024-01-05 23:28:36 +08:00
parent 98b014bb40
commit b160c6317e
21 changed files with 264 additions and 592 deletions

View File

@@ -4,8 +4,8 @@ import { getPreference, updatePreference } from '@/api/user/preference';
import { Message } from '@arco-design/web-vue';
import { useDark } from '@vueuse/core';
import { DEFAULT_SCHEMA } from '@/views/host/terminal/types/terminal.theme';
import TerminalDispatcher from '@/views/host/terminal/handler/terminal-dispatcher';
import TerminalTabManager from '@/views/host/terminal/handler/terminal-tab-manager';
import TerminalSessionManager from '@/views/host/terminal/handler/terminal-session-manager';
// 暗色主题
export const DarkTheme = {
@@ -30,8 +30,8 @@ export default defineStore('terminal', {
displaySetting: {} as TerminalDisplaySetting,
themeSchema: {} as TerminalThemeSchema
},
tabs: new TerminalTabManager(),
dispatcher: new TerminalDispatcher()
tabManager: new TerminalTabManager(),
sessionManager: new TerminalSessionManager()
}),
actions: {

View File

@@ -1,11 +1,11 @@
import type { Ref } from 'vue';
import { Terminal } from 'xterm';
import type { ITerminalTabManager, ITerminalSessionManager } from '@/views/host/terminal/types/terminal.type';
export interface TerminalState {
isDarkTheme: Ref<boolean>;
preference: TerminalPreference;
tabs: ITerminalTabManager;
dispatcher: ITerminalDispatcher;
tabManager: ITerminalTabManager;
sessionManager: ITerminalSessionManager;
}
// 终端配置
@@ -58,59 +58,3 @@ export interface TerminalThemeSchema {
[key: string]: unknown;
}
// 终端 tab 元素
export interface TerminalTabItem {
key: string;
title: string;
type: string;
[key: string]: unknown;
}
// 终端 tab 管理器定义
export interface ITerminalTabManager {
// 当前 tab
active: string;
// 全部 tab
items: Array<TerminalTabItem>;
// 点击 tab
clickTab: (key: string) => void;
// 删除 tab
deleteTab: (key: string) => void;
// 打开 tab
openTab: (tab: TerminalTabItem) => void;
// 清空
clear: () => void;
}
// 终端调度器
export interface ITerminalDispatcher {
// 打开终端
openTerminal: (record: any) => void;
// 注册终端处理器
registerTerminalHandler: (tab: TerminalTabItem, handler: ITerminalHandler) => void;
// 发送消息
onMessage: (session: string, value: string) => void;
// 重置
reset: () => void;
}
// 终端处理器
export interface ITerminalHandler {
inst: Terminal;
connected: boolean;
// 连接
connect: () => void;
// 设置是否可写
setCanWrite: (canWrite: boolean) => void;
// 写入数据
write: (value: string) => void;
// 自适应
fit: () => void;
// 关闭
close: () => void;
}