11import AppKit
22import Service
3+ import ServiceManagement
34import SwiftUI
45import UserNotifications
56import XPCShared
@@ -12,6 +13,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate {
1213 func applicationDidFinishLaunching( _: Notification ) {
1314 NSApp . setActivationPolicy ( . accessory)
1415 buildStatusBarMenu ( )
16+ AXIsProcessTrustedWithOptions ( nil )
1517 }
1618
1719 @objc private func buildStatusBarMenu( ) {
@@ -77,10 +79,31 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate {
7779 }
7880
7981 @objc func toggleRealtimeSuggestions( ) {
80- UserDefaults . shared. set (
81- !UserDefaults. shared. bool ( forKey: SettingsKey . realtimeSuggestionToggle) ,
82- forKey: SettingsKey . realtimeSuggestionToggle
83- )
82+ let isOn = !UserDefaults. shared. bool ( forKey: SettingsKey . realtimeSuggestionToggle)
83+ if isOn {
84+ if !AXIsProcessTrusted( ) {
85+ let alert = NSAlert ( )
86+ let image = NSImage (
87+ systemSymbolName: " exclamationmark.triangle.fill " ,
88+ accessibilityDescription: nil
89+ )
90+ var config = NSImage . SymbolConfiguration (
91+ textStyle: . body,
92+ scale: . large
93+ )
94+ config = config. applying ( . init( hierarchicalColor: . systemYellow) )
95+ alert. icon = image? . withSymbolConfiguration ( config)
96+ alert. messageText = " Accessibility API Permission Required "
97+ alert. informativeText =
98+ " Permission not granted to use Accessibility API. Please turn in on in System Settings.app. "
99+ alert. addButton ( withTitle: " OK " )
100+ alert. addButton ( withTitle: " Cancel " )
101+ alert. alertStyle = . warning
102+ alert. runModal ( )
103+ return
104+ }
105+ }
106+ UserDefaults . shared. set ( isOn, forKey: SettingsKey . realtimeSuggestionToggle)
84107 }
85108}
86109
0 commit comments