Reenable multilineinfoview

This commit is contained in:
Max Goedjen
2026-09-08 21:52:02 -07:00
parent 525ca1ce3e
commit 11b6adb648
3 changed files with 194 additions and 161 deletions
@@ -46,42 +46,42 @@ struct CertificateDetailView: View {
text: URL.certificatePath(for: certificate.id, in: URL.certificatesDirectory),
showRevealInFinder: true
)
// if let validityRange = certificate.validityRange {
// let epoch = Date(timeIntervalSince1970: 0)
// let end = Date(timeIntervalSince1970: TimeInterval(UInt64.max))
// switch (validityRange.lowerBound, validityRange.upperBound) {
// case (epoch, end):
// EmptyView()
// case (epoch, let otherEnd):
// Spacer()
// .frame(height: 20)
// MultilineInfoView(title: .certificateDetailValidUntilLabel, image: Image(systemName: "calendar.badge.clock"), items: [otherEnd.formatted()])
// case (let otherStart, end):
// Spacer()
// .frame(height: 20)
// MultilineInfoView(title: .certificateDetailValidAfterLabel, image: Image(systemName: "calendar.badge.clock"), items: [otherStart.formatted()])
// default:
// Spacer()
// .frame(height: 20)
// MultilineInfoView(title: .certificateDetailValidityRangeLabel, image: Image(systemName: "calendar.badge.clock"), items: [validityRange.formatted()])
// }
// }
// if !certificate.principals.isEmpty {
// Spacer()
// .frame(height: 20)
// MultilineInfoView(title: .certificateDetailPrincipalsLabel, image: Image(systemName: "person.2"), items: certificate.principals)
// }
// if !certificate.criticalOptions.isEmpty {
// Spacer()
// .frame(height: 20)
// MultilineInfoView(title: .certificateDetailCriticalOptionsLabel, image: Image(systemName: "person.2"), items: certificate.criticalOptions)
// }
// if !certificate.extensions.isEmpty {
// Spacer()
// .frame(height: 20)
// MultilineInfoView(title: .certificateDetailExtensionsLabel, image: Image(systemName: "person.2"), items: certificate.extensions)
// }
// Spacer()
if let validityRange = certificate.validityRange {
let epoch = Date(timeIntervalSince1970: 0)
let end = Date(timeIntervalSince1970: TimeInterval(UInt64.max))
switch (validityRange.lowerBound, validityRange.upperBound) {
case (epoch, end):
EmptyView()
case (epoch, let otherEnd):
Spacer()
.frame(height: 20)
MultilineInfoView(title: .certificateDetailValidUntilLabel, image: Image(systemName: "calendar.badge.clock"), items: [otherEnd.formatted()])
case (let otherStart, end):
Spacer()
.frame(height: 20)
MultilineInfoView(title: .certificateDetailValidAfterLabel, image: Image(systemName: "calendar.badge.clock"), items: [otherStart.formatted()])
default:
Spacer()
.frame(height: 20)
MultilineInfoView(title: .certificateDetailValidityRangeLabel, image: Image(systemName: "calendar.badge.clock"), items: [validityRange.formatted()])
}
}
if !certificate.principals.isEmpty {
Spacer()
.frame(height: 20)
MultilineInfoView(title: .certificateDetailPrincipalsLabel, image: Image(systemName: "person.2"), items: certificate.principals)
}
if !certificate.criticalOptions.isEmpty {
Spacer()
.frame(height: 20)
MultilineInfoView(title: .certificateDetailCriticalOptionsLabel, image: Image(systemName: "person.2"), items: certificate.criticalOptions)
}
if !certificate.extensions.isEmpty {
Spacer()
.frame(height: 20)
MultilineInfoView(title: .certificateDetailExtensionsLabel, image: Image(systemName: "person.2"), items: certificate.extensions)
}
Spacer()
}
}
.padding()
@@ -43,22 +43,18 @@ struct SecretDetailView<SecretType: Secret>: View {
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) })
// )
// })
// )
// }
if !certificates.isEmpty {
Spacer()
.frame(height: 20)
MultilineInfoView(title: .secretDetailCertificatePathLabel, image: Image(systemName: "checkmark.seal.text.page")) {
ForEach(certificates) { certificate in
Text(certificate.name)
.multilineItemAction(image: Image(systemName: "chevron.forward")) {
navigateToCertificate?(certificate)
}
}
}
}
Spacer()
}
}