mirror of
https://github.com/neon443/ShhShell.git
synced 2026-03-11 13:26:16 +00:00
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:
@@ -122,6 +122,7 @@ class KeyManager: ObservableObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func renameKey(keypair: Keypair, newName: String) {
|
func renameKey(keypair: Keypair, newName: String) {
|
||||||
|
guard !newName.isEmpty else { return }
|
||||||
let keyID = keypair.id
|
let keyID = keypair.id
|
||||||
guard let index = keypairs.firstIndex(where: { $0.id == keyID }) else { return }
|
guard let index = keypairs.firstIndex(where: { $0.id == keyID }) else { return }
|
||||||
var keypairWithNewName = keypair
|
var keypairWithNewName = keypair
|
||||||
|
|||||||
@@ -15,13 +15,18 @@ struct KeyDetailView: View {
|
|||||||
@State var keyname: String = ""
|
@State var keyname: String = ""
|
||||||
@State private var reveal: Bool = false
|
@State private var reveal: Bool = false
|
||||||
|
|
||||||
|
@Environment(\.dismiss) var dismiss
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
ZStack {
|
ZStack {
|
||||||
hostsManager.selectedTheme.background.suiColor.opacity(0.7)
|
hostsManager.selectedTheme.background.suiColor.opacity(0.7)
|
||||||
.ignoresSafeArea(.all)
|
.ignoresSafeArea(.all)
|
||||||
List {
|
List {
|
||||||
TextBox(label: "Name", text: $keyname, prompt: "A name for your key")
|
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)
|
keyManager.renameKey(keypair: keypair, newName: keyname)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,6 +88,13 @@ struct KeyDetailView: View {
|
|||||||
CenteredLabel(title: "Copy private key", systemName: "document.on.document")
|
CenteredLabel(title: "Copy private key", systemName: "document.on.document")
|
||||||
}
|
}
|
||||||
.listRowSeparator(.hidden)
|
.listRowSeparator(.hidden)
|
||||||
|
|
||||||
|
CenteredLabel(title: "Delete", systemName: "trash")
|
||||||
|
.foregroundStyle(.red)
|
||||||
|
.onTapGesture {
|
||||||
|
keyManager.deleteKey(keypair)
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.scrollContentBackground(.hidden)
|
.scrollContentBackground(.hidden)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,11 @@ struct KeyManagerView: View {
|
|||||||
} label: {
|
} label: {
|
||||||
HStack {
|
HStack {
|
||||||
Image(systemName: "key")
|
Image(systemName: "key")
|
||||||
|
if kp.label.isEmpty {
|
||||||
|
Text(kp.id.uuidString)
|
||||||
|
} else {
|
||||||
Text(kp.label)
|
Text(kp.label)
|
||||||
|
}
|
||||||
Spacer()
|
Spacer()
|
||||||
Text(kp.type.description)
|
Text(kp.type.description)
|
||||||
.foregroundStyle(.gray)
|
.foregroundStyle(.gray)
|
||||||
|
|||||||
Reference in New Issue
Block a user