dependency injection in ShhShellApp via the init

added keymanager to sshhandler so it can access keys
This commit is contained in:
neon443
2025-07-02 08:19:01 +01:00
parent 935c118d35
commit ce162f437a
9 changed files with 29 additions and 15 deletions

View File

@@ -15,6 +15,8 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
private var session: ssh_session?
private var channel: ssh_channel?
var keyManager: KeyManager
@MainActor var container: TerminalViewContainer {
TerminalViewContainer.shared
}
@@ -38,8 +40,9 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
private let userDefaults = NSUbiquitousKeyValueStore.default
private let logger = Logger(subsystem: "xy", category: "sshHandler")
init(host: Host) {
init(host: Host, keyManager: KeyManager?) {
self.host = host
self.keyManager = keyManager ?? KeyManager()
}
func getHostkey() -> String? {

View File

@@ -9,9 +9,16 @@ import SwiftUI
@main
struct ShhShellApp: App {
@StateObject var sshHandler: SSHHandler = SSHHandler(host: Host.blank)
@StateObject var sshHandler: SSHHandler
@StateObject var hostsManager: HostsManager = HostsManager()
@StateObject var keyManager: KeyManager = KeyManager()
@StateObject var keyManager: KeyManager
init() {
let keyManager = KeyManager()
_sshHandler = StateObject(wrappedValue: SSHHandler(host: Host.blank, keyManager: keyManager))
_keyManager = StateObject(wrappedValue: keyManager)
}
var body: some Scene {
WindowGroup {

View File

@@ -49,9 +49,10 @@ struct ContentView: View {
}
#Preview {
let keymanager = KeyManager()
ContentView(
handler: SSHHandler(host: Host.debug),
handler: SSHHandler(host: Host.debug, keyManager: keymanager),
hostsManager: HostsManager(),
keyManager: KeyManager()
keyManager: keymanager
)
}

View File

@@ -197,9 +197,10 @@ struct ConnectionView: View {
#Preview {
let keymanager = KeyManager()
ConnectionView(
handler: SSHHandler(host: Host.debug),
handler: SSHHandler(host: Host.debug, keyManager: keymanager),
hostsManager: HostsManager(),
keyManager: KeyManager()
keyManager: keymanager
)
}

View File

@@ -21,7 +21,7 @@ struct HostsView: View {
ForEach(hostsManager.hosts) { host in
NavigationLink() {
ConnectionView(
handler: SSHHandler(host: host),
handler: SSHHandler(host: host, keyManager: keyManager),
hostsManager: hostsManager,
keyManager: keyManager
)
@@ -64,7 +64,7 @@ struct HostsView: View {
ToolbarItem(placement: .confirmationAction) {
NavigationLink {
ConnectionView(
handler: SSHHandler(host: Host.blank),
handler: SSHHandler(host: Host.blank, keyManager: keyManager),
hostsManager: hostsManager,
keyManager: keyManager
)
@@ -78,7 +78,7 @@ struct HostsView: View {
#Preview {
HostsView(
handler: SSHHandler(host: Host.debug),
handler: SSHHandler(host: Host.debug, keyManager: nil),
hostsManager: HostsManager(),
keyManager: KeyManager()
)

View File

@@ -59,6 +59,6 @@ struct DialogView: View {
#Preview {
ZStack {
Color.black
DialogView(handler: SSHHandler(host: Host.debug), showDialog: true)
DialogView(handler: SSHHandler(host: Host.debug, keyManager: nil), showDialog: true)
}
}

View File

@@ -9,6 +9,7 @@ import SwiftUI
struct SessionView: View {
@ObservedObject var hostsManager: HostsManager
@ObservedObject var keyManager: KeyManager
@ObservedObject var container = TerminalViewContainer.shared
@State var key: UUID
@@ -34,7 +35,7 @@ struct SessionView: View {
}
.fullScreenCover(isPresented: $shellPresented) {
ShellView(
handler: container.sessions[key]?.handler ?? SSHHandler(host: Host.blank),
handler: container.sessions[key]?.handler ?? SSHHandler(host: Host.blank, keyManager: keyManager),
hostsManager: hostsManager
)
}
@@ -44,6 +45,7 @@ struct SessionView: View {
#Preview {
SessionView(
hostsManager: HostsManager(),
keyManager: KeyManager(),
key: UUID()
)
}

View File

@@ -19,7 +19,7 @@ struct SessionsListView: View {
if !container.sessions.isEmpty {
Section("Sessions") {
ForEach(container.sessionIDs, id: \.self) { key in
SessionView(hostsManager: hostsManager, key: key)
SessionView(hostsManager: hostsManager, keyManager: keyManager, key: key)
.id(container.sessions[key]!.handler.connected)
}
}
@@ -29,7 +29,7 @@ struct SessionsListView: View {
#Preview {
SessionsListView(
handler: SSHHandler(host: Host.debug),
handler: SSHHandler(host: Host.debug, keyManager: nil),
hostsManager: HostsManager(),
keyManager: KeyManager()
)

View File

@@ -69,7 +69,7 @@ struct ShellView: View {
#Preview {
ShellView(
handler: SSHHandler(host: Host.debug),
handler: SSHHandler(host: Host.debug, keyManager: nil),
hostsManager: HostsManager()
)
}