import Foundation
import SwiftUI

struct NoticeView: View {

    let text: String
    let severity: Severity
    let actionTitle: String?
    let action: (() -> Void)?

    var body: some View {
        HStack {
            Text(text).bold()
            Spacer()
            if action != nil {
                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