mirror of
https://github.com/maxgoedjen/secretive.git
synced 2025-05-10 21:17:21 +00:00
74 lines
1.8 KiB
Swift
74 lines
1.8 KiB
Swift
import Foundation
|
|
import SwiftUI
|
|
|
|
struct NoticeView: View {
|
|
|
|
let text: String
|
|
let severity: Severity
|
|
let actionTitle: String?
|
|
let action: (() -> Void)?
|
|
let secondaryActionTitle: String?
|
|
let secondaryAction: (() -> Void)?
|
|
|
|
public init(text: String, severity: NoticeView.Severity, actionTitle: String?, action: (() -> Void)?, secondaryActionTitle: String? = nil, secondaryAction: (() -> Void)? = nil) {
|
|
self.text = text
|
|
self.severity = severity
|
|
self.actionTitle = actionTitle
|
|
self.action = action
|
|
self.secondaryActionTitle = secondaryActionTitle
|
|
self.secondaryAction = secondaryAction
|
|
}
|
|
|
|
var body: some View {
|
|
HStack {
|
|
Text(text).bold()
|
|
Spacer()
|
|
if action != nil {
|
|
if secondaryAction != nil {
|
|
Button(action: secondaryAction!) {
|
|
Text(secondaryActionTitle!)
|
|
}
|
|
}
|
|
Button(action: action!) {
|
|
Text(actionTitle!)
|
|
}
|
|
}
|
|
}.padding().background(color)
|
|
}
|
|
|
|
var color: Color {
|
|
switch severity {
|
|
case .advisory:
|
|
return Color.orange
|
|
case .critical:
|
|
return Color.red
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
extension NoticeView {
|
|
|
|
enum Severity {
|
|
case advisory, critical
|
|
}
|
|
|
|
}
|
|
|
|
#if DEBUG
|
|
|
|
struct NoticeView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
Group {
|
|
NoticeView(text: "Agent Not Running", severity: .advisory, actionTitle: "Run Setup") {
|
|
print("OK")
|
|
}
|
|
NoticeView(text: "Critical Security Update Required", severity: .critical, actionTitle: "Update") {
|
|
print("OK")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif
|