mirror of
https://github.com/usestrix/firewall.git
synced 2026-11-08 15:19:43 -10:00
* 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
50 lines
1.5 KiB
Swift
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)")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|