mirror of
https://github.com/neon443/ShhShell.git
synced 2026-03-11 21:36:17 +00:00
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:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user