Files

24 lines
916 B
Swift

import SwiftUI
/// 静默启动偏好(ADR 0017):启动时不呈现主窗口,直接以菜单栏形态后台运行。
/// 默认关;切换即持久化,当次会话无影响,下次启动生效。代理运行时恢复与
/// 登录项注册都不依赖它。持久化走应用 defaults 域,与监听文件分别管理。
@MainActor
final class SilentLaunchController: ObservableObject {
@Published private(set) var isEnabled: Bool
private let store: SilentLaunchStore
init(store: SilentLaunchStore) {
self.store = store
isEnabled = store.loadSilentLaunchEnabled()
}
/// 先落盘后翻转内存态:开关呈现不得与下次启动的实际行为脱节。UserDefaults
/// 无失败信号(cfprefsd 尽力而为),文件版的失败点名路径随迁移移除。
func setEnabled(_ enabled: Bool) {
store.save(silentLaunchEnabled: enabled)
isEnabled = enabled
}
}