ref(connectable tab) on session destroyed

This commit is contained in:
Clem Fern
2023-05-12 19:39:44 +02:00
parent 2b5976f202
commit 312b365851
5 changed files with 44 additions and 41 deletions

View File

@@ -784,7 +784,7 @@ export class BaseTerminalTabComponent<P extends BaseTerminalProfile> extends Bas
})
this.attachSessionHandler(this.session.destroyed$, () => {
this.setSession(null)
this.onSessionDestroyed()
})
this.attachSessionHandler(this.session.oscProcessor.copyRequested$, content => {
@@ -793,6 +793,13 @@ export class BaseTerminalTabComponent<P extends BaseTerminalProfile> extends Bas
})
}
/**
* Method called when session is destroyed. Set the session to null
*/
protected onSessionDestroyed() {
this.setSession(null)
}
protected detachSessionHandlers (): void {
this.sessionHandlers.cancelAll()
}

View File

@@ -32,6 +32,21 @@ export abstract class ConnectableTerminalTabComponent<P extends BaseTerminalProf
async initializeSession (): Promise<void> {
this.reconnectOffered = false
}
/**
* Method called when session is destroyed. Handle the tab behavior on session end for connectable tab
*/
protected onSessionDestroyed() {
super.onSessionDestroyed()
if (this.frontend) {
if (this.profile.behaviorOnSessionEnd === 'reconnect') {
this.reconnect()
} else if (this.profile.behaviorOnSessionEnd === 'keep' || this.profile.behaviorOnSessionEnd === 'auto' && !this.isSessionExplicitlyTerminated()) {
this.offerReconnection()
}
}
}
/**
* Offering reconnection to the user if it hasn't been done yet.