Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 4 additions & 8 deletions HyperWindow/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
let accessibilityValue: String
}

static func shouldPresentSettings(launchedAsLoginItem: Bool) -> Bool {
!launchedAsLoginItem
}

static func shouldPresentPermissionAlert(launchedAsLoginItem: Bool) -> Bool {
static func isManualLaunch(launchedAsLoginItem: Bool) -> Bool {
!launchedAsLoginItem
}

Expand Down Expand Up @@ -126,7 +122,7 @@ extension AppDelegate {
stateMachine.suppressActivationAlerts = launchedAsLoginItem
}

if Self.shouldPresentSettings(launchedAsLoginItem: launchedAsLoginItem) {
if Self.isManualLaunch(launchedAsLoginItem: launchedAsLoginItem) {
NSApp.activate(ignoringOtherApps: true)
preferencesController.showWindow(nil)
}
Expand Down Expand Up @@ -251,13 +247,13 @@ extension AppDelegate {
stateMachine.state = .deactivated
stateMachine.checkState()
}
if stateMachine.state != .activated && Self.shouldPresentPermissionAlert(launchedAsLoginItem: launchedAsLoginItem) {
if stateMachine.state != .activated && Self.isManualLaunch(launchedAsLoginItem: launchedAsLoginItem) {
showRestartPrompt()
}
case .revoked:
log(.error, "Accessibility permissions revoked - immediately deactivating to prevent system crashes")
stateMachine.deactivate()
if Self.shouldPresentPermissionAlert(launchedAsLoginItem: launchedAsLoginItem) {
if Self.isManualLaunch(launchedAsLoginItem: launchedAsLoginItem) {
showPermissionRevokedAlert()
}
case .unchanged:
Expand Down
11 changes: 3 additions & 8 deletions HyperWindowTests/AppStateMachineTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,9 @@ class AppStateMachineTests: XCTestCase {

class AppDelegateLaunchTests: XCTestCase {

func test_manual_launch_presents_settings_but_login_launch_stays_silent() {
XCTAssertTrue(AppDelegate.shouldPresentSettings(launchedAsLoginItem: false))
XCTAssertFalse(AppDelegate.shouldPresentSettings(launchedAsLoginItem: true))
}

func test_login_launch_suppresses_permission_alerts() {
XCTAssertTrue(AppDelegate.shouldPresentPermissionAlert(launchedAsLoginItem: false))
XCTAssertFalse(AppDelegate.shouldPresentPermissionAlert(launchedAsLoginItem: true))
func test_login_launch_is_not_a_manual_launch() {
XCTAssertTrue(AppDelegate.isManualLaunch(launchedAsLoginItem: false))
XCTAssertFalse(AppDelegate.isManualLaunch(launchedAsLoginItem: true))
}

func test_statusPresentationRequires_tracker_permission_and_activated_state() {
Expand Down
Loading