Files
firewall/macos/App/MenuBarView.swift
ian-at-strix 23db767cc1 Allow a held-back package once from the app, releasing the waiting download (#37)
* Hold a held-back download open so allowing it lets it through

* Allow a held-back package once from the app, releasing the waiting download
2026-10-23 10:55:03 -04:00

50 lines
1.5 KiB
Swift

import SwiftUI
struct MenuBarView: View {
@ObservedObject var model: FirewallModel
@Environment(\.openWindow) private var openWindow
var body: some View {
Text(model.screening ? "Screening downloads" : "Not running")
Divider()
Button("Setup") {
SetupWindow.open(openWindow)
}
Button(model.screening ? "Pause" : "Resume") {
Task { await model.setEnabled(!model.screening) }
}
.disabled(model.busy || !model.configured)
Button("Restart") {
Task { await model.restart() }
}
.disabled(model.busy)
if !model.blocked.isEmpty {
Divider()
ForEach(model.blocked) { package in
if !package.malicious {
Menu("Held back \(package.label) (\(package.eco))") {
Text(package.reason)
Button("Allow Once") {
Task { await model.allow(package, .once) }
}
.disabled(model.busy || !package.trustable)
Button("Trust this version") {
Task { await model.allow(package, .always) }
}
.disabled(model.busy || !package.trustable)
}
} else {
Menu("Blocked \(package.label) (\(package.eco))") {
Text("Malicious: \(package.reason)")
}
}
}
}
}
}