Files
ShhShell/ShhShell/Views/Keys/KeyImporterView.swift
neon443 c9d7b06305 improve ui on keydetailview
add set(keypair, onHost) to set a keypair on host
remove getkeys it always returns []
add delete button to
remove rsa from keytype
rename symbolpreview ->hostsymbolpreview
2025-07-02 21:55:50 +01:00

67 lines
1.4 KiB
Swift

//
// KeyImporterView.swift
// ShhShell
//
// Created by neon443 on 01/07/2025.
//
import SwiftUI
struct KeyImporterView: View {
@ObservedObject var keyManager: KeyManager
@Environment(\.dismiss) var dismiss
@State var keyName: String = UIDevice().model + " " + Date().formatted()
@State var privkeyStr: String = ""
@State var keyType: KeyType = .ed25519
var keypair: Keypair {
Keypair(type: keyType, name: keyName, privateKey: privkeyStr.data(using: .utf8) ?? Data())
}
var body: some View {
List {
TextBox(label: "Name", text: $keyName, prompt: "A name for your key")
Picker("Key type", selection: $keyType) {
ForEach(KeyType.allCases, id: \.self) { type in
Text(type.description)
.tag(type)
}
}
.pickerStyle(SegmentedPickerStyle())
HStack {
Text("Private Key")
Spacer()
Text("Required")
.foregroundStyle(.red)
}
TextEditor(text: $privkeyStr)
if !keypair.openSshPubkey.isEmpty {
TextEditor(text: .constant(keypair.openSshPubkey))
.foregroundStyle(.gray)
}
}
Button() {
keyManager.importKey(type: keyType, priv: privkeyStr, name: keyName)
dismiss()
} label: {
Text("Import")
}
.onTapGesture {
UINotificationFeedbackGenerator().notificationOccurred(.success)
}
.buttonStyle(.borderedProminent)
}
}
#Preview {
KeyImporterView(keyManager: KeyManager())
}