Files
secretive/Sources/Secretive/Views/Secrets/SecretDetailView.swift
T
2026-09-07 12:49:44 -07:00

76 lines
2.7 KiB
Swift

import SwiftUI
import SecretKit
import Common
import CertificateKit
import SSHProtocolKit
struct SecretDetailView<SecretType: Secret>: View {
let secret: SecretType
let certificates: [Certificate]
let navigateToCertificate: ((Certificate) -> Void)?
private let keyWriter = OpenSSHPublicKeyWriter()
var body: some View {
ScrollView {
Form {
Section {
CopyableView(
title: .secretDetailSha256FingerprintLabel,
image: Image(systemName: "touchid"),
text: keyWriter.openSSHSHA256Fingerprint(secret: secret)
)
Spacer()
.frame(height: 20)
CopyableView(
title: .secretDetailMd5FingerprintLabel,
image: Image(systemName: "touchid"),
text: keyWriter.openSSHMD5Fingerprint(secret: secret)
)
Spacer()
.frame(height: 20)
CopyableView(
title: .secretDetailPublicKeyLabel,
image: Image(systemName: "key"),
text: keyWriter.openSSHString(secret: secret)
)
Spacer()
.frame(height: 20)
CopyableView(
title: .secretDetailPublicKeyPathLabel,
image: Image(systemName: "lock.doc"),
text: URL.publicKeyPath(for: secret, in: URL.publicKeyDirectory),
showRevealInFinder: true
)
// if !certificates.isEmpty {
// Spacer()
// .frame(height: 20)
// MultilineInfoView(
// title: .secretDetailCertificatePathLabel,
// image: Image(
// systemName: "checkmark.seal.text.page"
// ),
// items: certificates.map({ certificate in
// MultilineInfoView.Item(
// text: certificate.name,
// action: (Image(systemName: "chevron.forward"), { navigateToCertificate?(certificate) })
// )
// })
// )
// }
Spacer()
}
}
.padding()
}
.frame(minHeight: 200, maxHeight: .infinity)
}
}
//#Preview {
// SecretDetailView(secret: Preview.Secret(name: "Demonstration Secret"))
//}