@@ -17,6 +17,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
17
17
var windowController : NSWindowController ?
18
18
var transparentWindowController : TransparentWindowController ?
19
19
let appStateManager = AppStateManager . shared
20
+ let elevationManager = ElevationManager . shared
20
21
var mainWindow : NSWindow ?
21
22
static var urlLaunch = false
22
23
static var shouldExit = false
@@ -87,6 +88,29 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
87
88
UNUserNotificationCenter . current ( ) . delegate = notificationDelegate
88
89
appStateManager. startBackgroundTasks ( )
89
90
appStateManager. refreshAll ( )
91
+ checkAndHandleDemotionOnLaunch ( )
92
+ }
93
+
94
+ private func checkAndHandleDemotionOnLaunch( ) {
95
+ if let endTime = elevationManager. loadPersistedDemotionState ( ) , Date ( ) >= endTime {
96
+ elevationManager. demotePrivileges { success in
97
+ if success {
98
+ Logger . shared. logDebug ( " Privileges automatically demoted on app launch. " )
99
+ // Clear persisted state
100
+ UserDefaults . standard. removeObject ( forKey: " PrivilegeDemotionEndTime " )
101
+ } else {
102
+ Logger . shared. logError ( " Failed to demote privileges on app launch. " )
103
+ }
104
+ }
105
+ } else if let endTime = elevationManager. loadPersistedDemotionState ( ) {
106
+ let remainingTime = endTime. timeIntervalSinceNow
107
+ elevationManager. startDemotionTimer ( duration: remainingTime) { remainingTime in
108
+ DispatchQueue . main. async {
109
+ AppStateManager . shared. timeToDemote = remainingTime
110
+ AppStateManager . shared. isDemotionActive = remainingTime > 0
111
+ }
112
+ }
113
+ }
90
114
}
91
115
92
116
private func setupTrayMenu( ) {
@@ -128,7 +152,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
128
152
func updateTrayIcon( hasUpdates: Bool ) {
129
153
let iconName = " MenuIcon "
130
154
guard let baseIcon = NSImage ( named: iconName) else {
131
- print ( " Error : \( iconName) not found " )
155
+ Logger . shared . logDebug ( " Failed to load tray icon : \( iconName) " )
132
156
return
133
157
}
134
158
@@ -175,7 +199,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
175
199
176
200
@objc private func togglePopover( ) {
177
201
guard let button = trayManager. getStatusItem ( ) . button else {
178
- print ( " Error: TrayMenuManager's statusItem.button is nil " )
202
+ Logger . shared . logError ( " Error: TrayMenuManager's statusItem.button is nil " )
179
203
return
180
204
}
181
205
0 commit comments