MULTI SESSIONS!!!

terminalviewcontainer has a dict of [handler, terminalView] with a uuid key
each session gets a new uuid, and on disconnect, the session is removed from terminalviewcontainer
sessions list view to reopen sessions
remove multiview
extracted terminalviewcontainer
This commit is contained in:
neon443
2025-06-29 15:40:46 +01:00
parent 870ebb6fcc
commit 331a921499
10 changed files with 133 additions and 20 deletions

View File

@@ -9,11 +9,14 @@ import Foundation
import LibSSH
import OSLog
import SwiftUI
import SwiftTerm
class SSHHandler: @unchecked Sendable, ObservableObject {
private var session: ssh_session?
private var channel: ssh_channel?
var sessionID: UUID?
var scrollback: [String] = []
var scrollbackSize = 0.0
@@ -101,6 +104,7 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
func connect() throws(SSHError) {
guard !host.address.isEmpty else { throw .connectionFailed("No address to connect to.") }
withAnimation { state = .connecting }
sessionID = UUID()
var verbosity: Int = 0
// var verbosity: Int = SSH_LOG_FUNCTIONS
@@ -134,6 +138,12 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
withAnimation { self.testSuceeded = nil }
}
if let sessionID {
Task { @MainActor in
TerminalViewContainer.shared.removeValue(forKey: sessionID)
self.sessionID = nil
}
}
scrollback = []
scrollbackSize = 0