cleanup input model

This commit is contained in:
Red Adaya 2024-02-08 08:59:40 +08:00
parent 648d98f065
commit 29cd754358

View File

@ -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<boolean> = mobx.observable.box(false);
infoShow: OV<boolean> = mobx.observable.box(false);
aIChatShow: OV<boolean> = 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) {