From 5f92086fd225debe54bea9936fe636102d20d056 Mon Sep 17 00:00:00 2001 From: sawka Date: Sat, 25 Feb 2023 23:43:06 -0800 Subject: [PATCH] model, getclientdata --- src/model.ts | 17 ++++++++++++++++- src/types.ts | 12 +++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/model.ts b/src/model.ts index 52afb3f5..bd122215 100644 --- a/src/model.ts +++ b/src/model.ts @@ -5,7 +5,7 @@ import {debounce} from "throttle-debounce"; import {handleJsonFetchResponse, base64ToArray, genMergeData, genMergeSimpleData, boundInt, isModKeyPress} from "./util"; import {TermWrap} from "./term"; import {v4 as uuidv4} from "uuid"; -import type {SessionDataType, WindowDataType, LineType, RemoteType, HistoryItem, RemoteInstanceType, RemotePtrType, CmdDataType, FeCmdPacketType, TermOptsType, RemoteStateType, ScreenDataType, ScreenWindowType, ScreenOptsType, LayoutType, PtyDataUpdateType, ModelUpdateType, UpdateMessage, InfoType, CmdLineUpdateType, UIContextType, HistoryInfoType, HistoryQueryOpts, FeInputPacketType, TermWinSize, RemoteInputPacketType, FeStateType, ContextMenuOpts, RendererContext, RendererModel, PtyDataType, BookmarkType} from "./types"; +import type {SessionDataType, WindowDataType, LineType, RemoteType, HistoryItem, RemoteInstanceType, RemotePtrType, CmdDataType, FeCmdPacketType, TermOptsType, RemoteStateType, ScreenDataType, ScreenWindowType, ScreenOptsType, LayoutType, PtyDataUpdateType, ModelUpdateType, UpdateMessage, InfoType, CmdLineUpdateType, UIContextType, HistoryInfoType, HistoryQueryOpts, FeInputPacketType, TermWinSize, RemoteInputPacketType, FeStateType, ContextMenuOpts, RendererContext, RendererModel, PtyDataType, BookmarkType, ClientDataType} from "./types"; import {WSControl} from "./ws"; import {ImageRendererModel} from "./imagerenderer"; import {measureText, getMonoFontSize} from "./textmeasure"; @@ -1838,6 +1838,7 @@ class Model { inputModel : InputModel; bookmarksModel : BookmarksModel; + clientData : OV = mobx.observable.box(null, {name: "clientData"}); constructor() { this.clientId = getApi().getId(); @@ -1862,6 +1863,7 @@ class Model { getApi().onLocalServerStatusChange(this.onLocalServerStatusChange.bind(this)); document.addEventListener("keydown", this.docKeyDownHandler.bind(this)); document.addEventListener("selectionchange", this.docSelectionChangeHandler.bind(this)); + setTimeout(() => this.getClientData(), 10); } getBaseHostPort() : string { @@ -2329,6 +2331,19 @@ class Model { return (update.info != null || update.history != null); } + getClientData() : void { + let url = sprintf(GlobalModel.getBaseHostPort() + "/api/get-client-data"); + let fetchHeaders = this.getFetchHeaders(); + fetch(url, {method: "post", body: null, headers: fetchHeaders}).then((resp) => handleJsonFetchResponse(url, resp)).then((data) => { + mobx.action(() => { + let clientData = data.data; + this.clientData.set(clientData); + })(); + }).catch((err) => { + this.errorHandler("calling get-client-data", err, true); + }); + } + submitCommandPacket(cmdPk : FeCmdPacketType, interactive : boolean) { if (this.debugCmds > 0) { console.log("[cmd]", cmdPacketString(cmdPk)); diff --git a/src/types.ts b/src/types.ts index 9d43f300..f45e8fba 100644 --- a/src/types.ts +++ b/src/types.ts @@ -381,4 +381,14 @@ type PtyDataType = { data : Uint8Array, }; -export type {SessionDataType, LineType, RemoteType, RemoteStateType, RemoteInstanceType, WindowDataType, HistoryItem, CmdRemoteStateType, FeCmdPacketType, TermOptsType, CmdStartPacketType, CmdDataType, ScreenDataType, ScreenOptsType, ScreenWindowType, LayoutType, PtyDataUpdateType, ModelUpdateType, UpdateMessage, InfoType, CmdLineUpdateType, RemotePtrType, UIContextType, HistoryInfoType, HistoryQueryOpts, WatchScreenPacketType, TermWinSize, FeInputPacketType, RemoteInputPacketType, RemoteEditType, FeStateType, ContextMenuOpts, RendererContext, WindowSize, RendererModel, PtyDataType, BookmarkType}; +type FeOptsType = { + termfontsize : number, +}; + +type ClientDataType = { + clientid : string, + userid : string, + feopts : FeOptsType; +}; + +export type {SessionDataType, LineType, RemoteType, RemoteStateType, RemoteInstanceType, WindowDataType, HistoryItem, CmdRemoteStateType, FeCmdPacketType, TermOptsType, CmdStartPacketType, CmdDataType, ScreenDataType, ScreenOptsType, ScreenWindowType, LayoutType, PtyDataUpdateType, ModelUpdateType, UpdateMessage, InfoType, CmdLineUpdateType, RemotePtrType, UIContextType, HistoryInfoType, HistoryQueryOpts, WatchScreenPacketType, TermWinSize, FeInputPacketType, RemoteInputPacketType, RemoteEditType, FeStateType, ContextMenuOpts, RendererContext, WindowSize, RendererModel, PtyDataType, BookmarkType, ClientDataType};