mirror of
https://github.com/neon443/ShhShell.git
synced 2026-03-11 13:26:16 +00:00
dependency injection in ShhShellApp via the init
added keymanager to sshhandler so it can access keys
This commit is contained in:
@@ -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? {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
)
|
||||
|
||||
@@ -69,7 +69,7 @@ struct ShellView: View {
|
||||
|
||||
#Preview {
|
||||
ShellView(
|
||||
handler: SSHHandler(host: Host.debug),
|
||||
handler: SSHHandler(host: Host.debug, keyManager: nil),
|
||||
hostsManager: HostsManager()
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user