Skip to content

Commit 7a9b7a3

Browse files
committed
Handle elevation on launch
1 parent 5bf8d7c commit 7a9b7a3

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

SupportCompanion/AppDelegate.swift

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
1717
var windowController: NSWindowController?
1818
var transparentWindowController: TransparentWindowController?
1919
let appStateManager = AppStateManager.shared
20+
let elevationManager = ElevationManager.shared
2021
var mainWindow: NSWindow?
2122
static var urlLaunch = false
2223
static var shouldExit = false
@@ -87,6 +88,29 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
8788
UNUserNotificationCenter.current().delegate = notificationDelegate
8889
appStateManager.startBackgroundTasks()
8990
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+
}
90114
}
91115

92116
private func setupTrayMenu() {
@@ -128,7 +152,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
128152
func updateTrayIcon(hasUpdates: Bool) {
129153
let iconName = "MenuIcon"
130154
guard let baseIcon = NSImage(named: iconName) else {
131-
print("Error: \(iconName) not found")
155+
Logger.shared.logDebug("Failed to load tray icon: \(iconName)")
132156
return
133157
}
134158

@@ -175,7 +199,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
175199

176200
@objc private func togglePopover() {
177201
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")
179203
return
180204
}
181205

0 commit comments

Comments
 (0)