From 29cd754358e37488211da166fbfd06493af32a22 Mon Sep 17 00:00:00 2001 From: Red Adaya Date: Thu, 8 Feb 2024 08:59:40 +0800 Subject: [PATCH] cleanup input model --- src/model/input.ts | 121 ++++----------------------------------------- 1 file changed, 10 insertions(+), 111 deletions(-) diff --git a/src/model/input.ts b/src/model/input.ts index 5479da628..ec05288cb 100644 --- a/src/model/input.ts +++ b/src/model/input.ts @@ -3,125 +3,22 @@ import type React from "react"; import * as mobx from "mobx"; -import { sprintf } from "sprintf-js"; -import { v4 as uuidv4 } from "uuid"; import { boundMethod } from "autobind-decorator"; -import { debounce } from "throttle-debounce"; -import * as mobxReact from "mobx-react"; +import { isBlank } from "../util/util"; import { - handleJsonFetchResponse, - base64ToString, - stringToBase64, - base64ToArray, - genMergeData, - genMergeDataMap, - genMergeSimpleData, - boundInt, - isModKeyPress, - isBlank, -} from "../util/util"; -import { TermWrap } from "../plugins/terminal/term"; -import { PluginModel } from "../plugins/plugins"; -import { - SessionDataType, - LineType, - RemoteType, HistoryItem, - RemoteInstanceType, RemotePtrType, - CmdDataType, - FeCmdPacketType, - TermOptsType, - ScreenDataType, - ScreenOptsType, - PtyDataUpdateType, - ModelUpdateType, - UpdateMessage, InfoType, - UIContextType, HistoryInfoType, HistoryQueryOpts, - FeInputPacketType, - RemoteInputPacketType, - ContextMenuOpts, - RendererContext, - RendererModel, - PtyDataType, - BookmarkType, - ClientDataType, - HistoryViewDataType, - AlertMessageType, - HistorySearchParams, - FocusTypeStrs, - ScreenLinesType, HistoryTypeStrs, - RendererPluginType, - WindowSize, - WebShareOpts, - TermContextUnion, - RemoteEditType, - RemoteViewType, - CommandRtnType, - WebCmd, - WebRemote, OpenAICmdInfoChatMessageType, - StatusIndicatorLevel, } from "../types/types"; -import * as T from "../types/types"; -import { WSControl } from "./ws"; -import { - getMonoFontSize, - windowWidthToCols, - windowHeightToRows, - termWidthFromCols, - termHeightFromRows, -} from "../util/textmeasure"; -import dayjs from "dayjs"; -import localizedFormat from "dayjs/plugin/localizedFormat"; -import customParseFormat from "dayjs/plugin/customParseFormat"; -import { getRendererContext, cmdStatusIsRunning } from "../app/line/lineutil"; -import { MagicLayout } from "../app/magiclayout"; -import { modalsRegistry } from "../app/common/modals/registry"; +import { StrWithPos } from "../types/types"; import * as appconst from "../app/appconst"; -import { checkKeyPressed, adaptFromReactOrNativeKeyEvent, setKeyUtilPlatform } from "../util/keyutil"; -import { OV, OArr, OMap, CV } from "../types/types"; -import { Session } from "./session"; -import { GlobalCommandRunner } from "./commandrunner"; +import { OV } from "../types/types"; import { Model } from "./model"; -import { ScreenLines } from "./screenlines"; - -dayjs.extend(customParseFormat); -dayjs.extend(localizedFormat); - -const RemotePtyRows = 8; // also in main.tsx -const RemotePtyCols = 80; -const ProdServerEndpoint = "http://127.0.0.1:1619"; -const ProdServerWsEndpoint = "ws://127.0.0.1:1623"; -const DevServerEndpoint = "http://127.0.0.1:8090"; -const DevServerWsEndpoint = "ws://127.0.0.1:8091"; -const DefaultTermFontSize = 12; -const MinFontSize = 8; -const MaxFontSize = 24; -const InputChunkSize = 500; -const RemoteColors = ["red", "green", "yellow", "blue", "magenta", "cyan", "white", "orange"]; -const TabColors = ["red", "orange", "yellow", "green", "mint", "cyan", "blue", "violet", "pink", "white"]; -const TabIcons = [ - "sparkle", - "fire", - "ghost", - "cloud", - "compass", - "crown", - "droplet", - "graduation-cap", - "heart", - "file", -]; - -// @ts-ignore -const VERSION = __WAVETERM_VERSION__; -// @ts-ignore -const BUILD = __WAVETERM_BUILD__; +import { CommandRunner } from "./commandrunner"; function getDefaultHistoryQueryOpts(): HistoryQueryOpts { return { @@ -137,7 +34,8 @@ function getDefaultHistoryQueryOpts(): HistoryQueryOpts { } class InputModel { - globalModel: Model = null; + globalCommandRunner: CommandRunner; + globalModel: Model; historyShow: OV = mobx.observable.box(false); infoShow: OV = mobx.observable.box(false); aIChatShow: OV = mobx.observable.box(false); @@ -187,6 +85,7 @@ class InputModel { constructor(globalModel: Model) { this.globalModel = globalModel; + this.globalCommandRunner = CommandRunner.getInstance(); this.filteredHistoryItems = mobx.computed(() => { return this._getFilteredHistoryItems(); }); @@ -254,7 +153,7 @@ class InputModel { let screen = this.globalModel.getActiveScreen(); if (screen != null) { if (screen.focusType.get() != "input") { - GlobalCommandRunner.screenSetFocus("input"); + this.globalCommandRunner.screenSetFocus("input"); } } } @@ -352,7 +251,7 @@ class InputModel { mobx.action(() => { this.historyLoading.set(true); })(); - GlobalCommandRunner.loadHistory(show, htype); + this.globalCommandRunner.loadHistory(show, htype); } openHistory(): void { @@ -373,7 +272,7 @@ class InputModel { } } - updateCmdLine(cmdLine: T.StrWithPos): void { + updateCmdLine(cmdLine: StrWithPos): void { mobx.action(() => { this.setCurLine(cmdLine.str); if (cmdLine.pos != appconst.NoStrPos) {