Skip to content

Commit

Permalink
refactor: improve naming
Browse files Browse the repository at this point in the history
  • Loading branch information
lwouis committed Jan 4, 2025
1 parent 95e51d1 commit 1e01747
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 19 deletions.
1 change: 1 addition & 0 deletions src/api-wrappers/private-apis/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ However their full signature is a best-effort of retro-engineering
Very little information is available about private APIs. I tried to document them as much as possible here

Some links:

* Webkit repo: https://github.com/WebKit/webkit/blob/master/Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h
* Alt-tab-macos issue: https://github.com/lwouis/alt-tab-macos/pull/87#issuecomment-558624755
* Github repo with retro-engineered internals: https://github.com/NUIKit/CGSInternal
36 changes: 18 additions & 18 deletions src/logic/SystemPermissions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import Cocoa

// macOS has some privacy restrictions. The user needs to grant certain permissions, app by app, in System Preferences > Security & Privacy
class SystemPermissions {
static var accessibilityIsGranted = PermissionStatus.notGranted
static var screenRecordingIsGranted = PermissionStatus.notGranted
static var accessibilityPermission = PermissionStatus.notGranted
static var screenRecordingPermission = PermissionStatus.notGranted
static var preStartupPermissionsPassed = false
static var flakyCounter = 0
static var timerPermissionsToUpdatePermissionsWindow: Timer?
Expand Down Expand Up @@ -44,14 +44,14 @@ class SystemPermissions {

@discardableResult
static func updateAccessibilityIsGranted() -> PermissionStatus {
accessibilityIsGranted = detectAccessibilityIsGranted()
return accessibilityIsGranted
accessibilityPermission = detectAccessibilityIsGranted()
return accessibilityPermission
}

@discardableResult
static func updateScreenRecordingIsGranted() -> PermissionStatus {
screenRecordingIsGranted = detectScreenRecordingIsGranted()
return screenRecordingIsGranted
screenRecordingPermission = detectScreenRecordingIsGranted()
return screenRecordingPermission
}

private static func detectAccessibilityIsGranted() -> PermissionStatus {
Expand All @@ -72,12 +72,12 @@ class SystemPermissions {
private static func checkPermissionsWhileAltTabIsRunning() {
SystemPermissions.updateAccessibilityIsGranted()
SystemPermissions.updateScreenRecordingIsGranted()
Logger.debug(accessibilityIsGranted, screenRecordingIsGranted, preStartupPermissionsPassed)
Menubar.togglePermissionCallout(screenRecordingIsGranted == .skipped)
if accessibilityIsGranted == .notGranted {
Logger.debug(accessibilityPermission, screenRecordingPermission, preStartupPermissionsPassed)
Menubar.togglePermissionCallout(screenRecordingPermission == .skipped)
if accessibilityPermission == .notGranted {
App.app.restart()
}
if screenRecordingIsGranted == .notGranted {
if screenRecordingPermission == .notGranted {
// permission check may yield a false negative during wake-up
// we restart after 2 negative checks
if flakyCounter >= 2 {
Expand All @@ -93,22 +93,22 @@ class SystemPermissions {
private static func checkPermissionsToUpdatePermissionsWindow(_ startupBlock: @escaping () -> Void) {
updateAccessibilityIsGranted()
updateScreenRecordingIsGranted()
Logger.debug(accessibilityIsGranted, screenRecordingIsGranted, preStartupPermissionsPassed)
Menubar.togglePermissionCallout(screenRecordingIsGranted == .skipped)
if accessibilityIsGranted != App.app.permissionsWindow?.accessibilityView?.permissionStatus {
App.app.permissionsWindow?.accessibilityView.updatePermissionStatus(accessibilityIsGranted)
Logger.debug(accessibilityPermission, screenRecordingPermission, preStartupPermissionsPassed)
Menubar.togglePermissionCallout(screenRecordingPermission == .skipped)
if accessibilityPermission != App.app.permissionsWindow?.accessibilityView?.permissionStatus {
App.app.permissionsWindow?.accessibilityView.updatePermissionStatus(accessibilityPermission)
}
if #available(macOS 10.15, *), screenRecordingIsGranted != App.app.permissionsWindow?.screenRecordingView?.permissionStatus {
App.app.permissionsWindow?.screenRecordingView?.updatePermissionStatus(screenRecordingIsGranted)
if #available(macOS 10.15, *), screenRecordingPermission != App.app.permissionsWindow?.screenRecordingView?.permissionStatus {
App.app.permissionsWindow?.screenRecordingView?.updatePermissionStatus(screenRecordingPermission)
}
if !preStartupPermissionsPassed {
if accessibilityIsGranted != .notGranted && screenRecordingIsGranted != .notGranted {
if accessibilityPermission != .notGranted && screenRecordingPermission != .notGranted {
preStartupPermissionsPassed = true
App.app.permissionsWindow?.close()
startupBlock()
}
} else {
if accessibilityIsGranted == .notGranted || screenRecordingIsGranted == .notGranted {
if accessibilityPermission == .notGranted || screenRecordingPermission == .notGranted {
App.app.restart()
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/ui/App.swift
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ class App: AppCenterApplication {
}

func refreshOpenUi(_ windowsToScreenshot: [Window], skipUpdatesBeforeShowing: Bool = false, onlyUpdateScreenshots: Bool = false) {
if !Appearance.hideThumbnails && !windowsToScreenshot.isEmpty && SystemPermissions.screenRecordingIsGranted == .granted {
if !Appearance.hideThumbnails && !windowsToScreenshot.isEmpty && SystemPermissions.screenRecordingPermission == .granted {
Windows.refreshThumbnails(windowsToScreenshot, onlyUpdateScreenshots)
return
}
Expand Down

0 comments on commit 1e01747

Please sign in to comment.