added rename support, it also has the name in the textbox when it spawns

added a delete button to the key detail view
key name in list will fallback to uuid if no name
prevent renaming to an empty name
This commit is contained in:
neon443
2025-07-02 21:29:16 +01:00
parent af912f234f
commit 6ad8ed22a0
3 changed files with 19 additions and 2 deletions

View File

@@ -122,6 +122,7 @@ class KeyManager: ObservableObject {
}
func renameKey(keypair: Keypair, newName: String) {
guard !newName.isEmpty else { return }
let keyID = keypair.id
guard let index = keypairs.firstIndex(where: { $0.id == keyID }) else { return }
var keypairWithNewName = keypair

View File

@@ -15,13 +15,18 @@ struct KeyDetailView: View {
@State var keyname: String = ""
@State private var reveal: Bool = false
@Environment(\.dismiss) var dismiss
var body: some View {
ZStack {
hostsManager.selectedTheme.background.suiColor.opacity(0.7)
.ignoresSafeArea(.all)
List {
TextBox(label: "Name", text: $keyname, prompt: "A name for your key")
.onChange(of: keypair.name) { _ in
.onAppear {
keyname = keypair.name
}
.onChange(of: keyname) { _ in
keyManager.renameKey(keypair: keypair, newName: keyname)
}
@@ -83,6 +88,13 @@ struct KeyDetailView: View {
CenteredLabel(title: "Copy private key", systemName: "document.on.document")
}
.listRowSeparator(.hidden)
CenteredLabel(title: "Delete", systemName: "trash")
.foregroundStyle(.red)
.onTapGesture {
keyManager.deleteKey(keypair)
dismiss()
}
}
.scrollContentBackground(.hidden)
}

View File

@@ -30,7 +30,11 @@ struct KeyManagerView: View {
} label: {
HStack {
Image(systemName: "key")
if kp.label.isEmpty {
Text(kp.id.uuidString)
} else {
Text(kp.label)
}
Spacer()
Text(kp.type.description)
.foregroundStyle(.gray)