mirror of
https://github.com/maxgoedjen/secretive.git
synced 2026-05-07 07:58:58 +02:00
53 lines
1.6 KiB
Swift
53 lines
1.6 KiB
Swift
import SwiftUI
|
|
import CertificateKit
|
|
import SSHProtocolKit
|
|
|
|
extension View {
|
|
|
|
func showingDeleteConfirmation(isPresented: Binding<Bool>, _ certificate: Certificate, _ store: CertificateStore, dismissalBlock: @escaping (Bool) -> ()) -> some View {
|
|
modifier(DeleteCertificateConfirmationModifier(isPresented: isPresented, certificate: certificate, store: store, dismissalBlock: dismissalBlock))
|
|
}
|
|
|
|
}
|
|
|
|
struct DeleteCertificateConfirmationModifier: ViewModifier {
|
|
|
|
var isPresented: Binding<Bool>
|
|
var certificate: Certificate
|
|
var store: CertificateStore
|
|
var dismissalBlock: (Bool) -> ()
|
|
@State var confirmedSecretName = ""
|
|
@State private var errorText: String?
|
|
|
|
func body(content: Content) -> some View {
|
|
content
|
|
.confirmationDialog(
|
|
String(localized: .deleteConfirmationTitle(name: certificate.name)),
|
|
isPresented: isPresented,
|
|
titleVisibility: .visible,
|
|
actions: {
|
|
Button(.deleteConfirmationDeleteButton, action: delete)
|
|
Button(.deleteConfirmationCancelButton, role: .cancel) {
|
|
dismissalBlock(false)
|
|
}
|
|
},
|
|
)
|
|
.dialogIcon(Image(systemName: "lock.trianglebadge.exclamationmark.fill"))
|
|
.onExitCommand {
|
|
dismissalBlock(false)
|
|
}
|
|
}
|
|
|
|
func delete() {
|
|
Task {
|
|
do {
|
|
try store.delete(certificate: certificate)
|
|
dismissalBlock(true)
|
|
} catch {
|
|
errorText = error.localizedDescription
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|