Skip to content

Commit b0d456a

Browse files
committed
Add permission not available alert
1 parent 7c09e7b commit b0d456a

1 file changed

Lines changed: 27 additions & 4 deletions

File tree

XPCService/AppDelegate.swift

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import AppKit
22
import Service
3+
import ServiceManagement
34
import SwiftUI
45
import UserNotifications
56
import 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

Comments
 (0)