39 lines
958 B
Swift
39 lines
958 B
Swift
//
|
||
// LaunchManager.swift
|
||
// punchnet
|
||
//
|
||
// Created by 安礼成 on 2026/3/23.
|
||
//
|
||
import ServiceManagement
|
||
import Observation
|
||
|
||
@Observable
|
||
class LaunchManager {
|
||
// 获取当前主 App 的服务实例
|
||
private let service = SMAppService.mainApp
|
||
|
||
// 检查当前是否已开启自启动
|
||
var launchAtLogin: Bool
|
||
|
||
init() {
|
||
self.launchAtLogin = (service.status == .enabled)
|
||
}
|
||
|
||
func toggleLaunchAtLogin(enabled: Bool) throws {
|
||
if enabled {
|
||
try service.register()
|
||
} else {
|
||
try service.unregister()
|
||
}
|
||
|
||
// 3. 重点:操作完成后,手动更新存储属性以触发 View 刷新
|
||
self.launchAtLogin = (service.status == .enabled)
|
||
}
|
||
|
||
// 4. 提供一个手动同步方法(用于应对用户在系统设置中修改的情况)
|
||
func refreshLaunchStatus() {
|
||
self.launchAtLogin = (service.status == .enabled)
|
||
}
|
||
|
||
}
|