diff --git a/ShhShell/Keys/KeyManager.swift b/ShhShell/Keys/KeyManager.swift index 70e1343..4e8e634 100644 --- a/ShhShell/Keys/KeyManager.swift +++ b/ShhShell/Keys/KeyManager.swift @@ -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 diff --git a/ShhShell/Views/Keys/KeyDetailView.swift b/ShhShell/Views/Keys/KeyDetailView.swift index fdc6712..cc64600 100644 --- a/ShhShell/Views/Keys/KeyDetailView.swift +++ b/ShhShell/Views/Keys/KeyDetailView.swift @@ -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) } diff --git a/ShhShell/Views/Keys/KeyManagerView.swift b/ShhShell/Views/Keys/KeyManagerView.swift index bdabd35..994e3e4 100644 --- a/ShhShell/Views/Keys/KeyManagerView.swift +++ b/ShhShell/Views/Keys/KeyManagerView.swift @@ -30,7 +30,11 @@ struct KeyManagerView: View { } label: { HStack { Image(systemName: "key") - Text(kp.label) + if kp.label.isEmpty { + Text(kp.id.uuidString) + } else { + Text(kp.label) + } Spacer() Text(kp.type.description) .foregroundStyle(.gray)