add UserDefaults-backed Settings storage
Settings enum holds all upcoming settings-window preferences. Booleans default to false (disabled by default); includeGreedyCasks and confirmBeforeUpgradeAll default to true via register(defaults:), which provides fallbacks without writing to disk. Launch-at-login is not stored here — SMAppService will be its source of truth. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
9f848be875
commit
be49480732
|
|
@ -43,6 +43,8 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
|||
// MARK: - Menu
|
||||
|
||||
func applicationDidFinishLaunching(_: Notification) {
|
||||
Settings.registerDefaults()
|
||||
|
||||
statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
|
||||
setMenuBarIcon("brewbar-uptodate")
|
||||
|
||||
|
|
|
|||
47
BrewBar/Settings.swift
Normal file
47
BrewBar/Settings.swift
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import Foundation
|
||||
|
||||
/// UserDefaults-backed app settings. Booleans read false for unset keys,
|
||||
/// which covers the disabled-by-default settings; enabled-by-default ones
|
||||
/// get their fallback via registerDefaults() (consulted only when the user
|
||||
/// has never changed the value — nothing is written to disk).
|
||||
///
|
||||
/// Launch-at-login is intentionally absent: SMAppService is its source of
|
||||
/// truth, so storing a copy here could only drift out of sync.
|
||||
enum Settings {
|
||||
static func registerDefaults() {
|
||||
UserDefaults.standard.register(defaults: [
|
||||
"includeGreedyCasks": true,
|
||||
"confirmBeforeUpgradeAll": true,
|
||||
])
|
||||
}
|
||||
|
||||
static var autoUpgradeFormulae: Bool {
|
||||
get { UserDefaults.standard.bool(forKey: "autoUpgradeFormulae") }
|
||||
set { UserDefaults.standard.set(newValue, forKey: "autoUpgradeFormulae") }
|
||||
}
|
||||
|
||||
static var autoUpgradeCasks: Bool {
|
||||
get { UserDefaults.standard.bool(forKey: "autoUpgradeCasks") }
|
||||
set { UserDefaults.standard.set(newValue, forKey: "autoUpgradeCasks") }
|
||||
}
|
||||
|
||||
static var notifyOnNewUpdates: Bool {
|
||||
get { UserDefaults.standard.bool(forKey: "notifyOnNewUpdates") }
|
||||
set { UserDefaults.standard.set(newValue, forKey: "notifyOnNewUpdates") }
|
||||
}
|
||||
|
||||
static var showCountInMenuBar: Bool {
|
||||
get { UserDefaults.standard.bool(forKey: "showCountInMenuBar") }
|
||||
set { UserDefaults.standard.set(newValue, forKey: "showCountInMenuBar") }
|
||||
}
|
||||
|
||||
static var includeGreedyCasks: Bool {
|
||||
get { UserDefaults.standard.bool(forKey: "includeGreedyCasks") }
|
||||
set { UserDefaults.standard.set(newValue, forKey: "includeGreedyCasks") }
|
||||
}
|
||||
|
||||
static var confirmBeforeUpgradeAll: Bool {
|
||||
get { UserDefaults.standard.bool(forKey: "confirmBeforeUpgradeAll") }
|
||||
set { UserDefaults.standard.set(newValue, forKey: "confirmBeforeUpgradeAll") }
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue