diff --git a/src/main.tsx b/src/main.tsx index 02274f65..ed2be7d5 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -498,7 +498,6 @@ class CmdInput extends React.Component<{}, {}> { } render() { - console.log("render CmdInput"); let model = GlobalModel; let win = GlobalModel.getActiveWindow(); let ri : RemoteInstanceType = null; @@ -924,6 +923,7 @@ class MainSideBar extends React.Component<{}, {}> { let session : Session = null; let remotes = model.remotes; let remote : RemoteType = null; + let idx : number = 0; return (
diff --git a/src/model.ts b/src/model.ts
index 523376c6..07c7df09 100644
--- a/src/model.ts
+++ b/src/model.ts
@@ -963,6 +963,12 @@ class Model {
}
runUpdate(genUpdate : UpdateMessage, interactive : boolean) {
+ mobx.action(() => {
+ this.runUpdate_internal(genUpdate, interactive);
+ })();
+ }
+
+ runUpdate_internal(genUpdate : UpdateMessage, interactive : boolean) {
if ("ptydata64" in genUpdate) {
let ptyMsg : PtyDataUpdateType = genUpdate;
let activeScreen = this.getActiveScreen();
@@ -974,24 +980,22 @@ class Model {
}
let update : ModelUpdateType = genUpdate;
if ("sessions" in update) {
- mobx.action(() => {
- let oldActiveScreen = this.getActiveScreen();
- genMergeData(this.sessionList, update.sessions, (s : Session) => s.sessionId, (sdata : SessionDataType) => sdata.sessionid, (sdata : SessionDataType) => new Session(sdata), (s : Session) => s.sessionIdx.get());
- if (update.activesessionid) {
- this.activateSession(update.activesessionid);
- }
- else {
- let newActiveScreen = this.getActiveScreen();
- if (oldActiveScreen != newActiveScreen) {
- if (newActiveScreen == null) {
- this.activateScreen(this.activeSessionId.get(), null, oldActiveScreen);
- }
- else {
- this.activateScreen(newActiveScreen.sessionId, newActiveScreen.screenId, oldActiveScreen);
- }
+ let oldActiveScreen = this.getActiveScreen();
+ genMergeData(this.sessionList, update.sessions, (s : Session) => s.sessionId, (sdata : SessionDataType) => sdata.sessionid, (sdata : SessionDataType) => new Session(sdata), (s : Session) => s.sessionIdx.get());
+ if (!("activatesessionid" in update)) {
+ let newActiveScreen = this.getActiveScreen();
+ if (oldActiveScreen != newActiveScreen) {
+ if (newActiveScreen == null) {
+ this.activateScreen(this.activeSessionId.get(), null, oldActiveScreen);
+ }
+ else {
+ this.activateScreen(newActiveScreen.sessionId, newActiveScreen.screenId, oldActiveScreen);
}
}
- })();
+ }
+ }
+ if ("activesessionid" in update) {
+ this.activateSession(update.activesessionid);
}
if ("line" in update) {
if (update.line != null) {
@@ -1182,26 +1186,9 @@ class Model {
loadSessionList() {
let url = new URL("http://localhost:8080/api/get-all-sessions");
fetch(url).then((resp) => handleJsonFetchResponse(url, resp)).then((data) => {
- mobx.action(() => {
- let sdatalist : SessionDataType[] = data.data || [];
- let slist : Session[] = [];
- let activeSessionId = null;
- let activeScreenId = null;
- for (let i=0; i