fix(app): preserve input access nagbar dismissal (#2189)

This commit is contained in:
Hampus authored and GitHub committed 2026-08-30 23:11:57 +02:00
1 parent d43d242b16
commit 5586d34293
1 file changed
+15 -2
@@ -20,6 +20,7 @@ class NativePermission {
private _linuxFlatpak = false; private _linuxFlatpak = false;
private _linuxInputAccessStatus: LinuxInputAccessStatus = 'unknown'; private _linuxInputAccessStatus: LinuxInputAccessStatus = 'unknown';
private _linuxInputAccessNagbarRequested = false; private _linuxInputAccessNagbarRequested = false;
private _linuxInputAccessNagbarDismissedThisSession = false;
private _linuxInputAccessNagbarReason: LinuxInputAccessNagbarReason | null = null; private _linuxInputAccessNagbarReason: LinuxInputAccessNagbarReason | null = null;
private _linuxInputAccessGrantNeedsRelogin = false; private _linuxInputAccessGrantNeedsRelogin = false;
private _linuxInputAccessGrantError: string | null = null; private _linuxInputAccessGrantError: string | null = null;
@@ -118,6 +119,7 @@ class NativePermission {
get shouldShowLinuxInputAccessNagbar(): boolean { get shouldShowLinuxInputAccessNagbar(): boolean {
return ( return (
this._linuxInputAccessNagbarRequested && this._linuxInputAccessNagbarRequested &&
!this._linuxInputAccessNagbarDismissedThisSession &&
this._isDesktop && this._isDesktop &&
this._platform === 'linux' && this._platform === 'linux' &&
this._waylandSession && this._waylandSession &&
@@ -126,15 +128,26 @@ class NativePermission {
} }
requestLinuxInputAccessNagbar(reason: LinuxInputAccessNagbarReason): void { requestLinuxInputAccessNagbar(reason: LinuxInputAccessNagbarReason): void {
if (this._linuxInputAccessNagbarDismissedThisSession) return;
this._linuxInputAccessNagbarRequested = true; this._linuxInputAccessNagbarRequested = true;
this._linuxInputAccessNagbarReason = reason; this._linuxInputAccessNagbarReason = reason;
} }
dismissLinuxInputAccessNagbar(): void { dismissLinuxInputAccessNagbar(): void {
this._linuxInputAccessNagbarDismissedThisSession = true;
this.clearLinuxInputAccessNagbarRequest();
}
private clearLinuxInputAccessNagbarRequest(): void {
this._linuxInputAccessNagbarRequested = false; this._linuxInputAccessNagbarRequested = false;
this._linuxInputAccessNagbarReason = null; this._linuxInputAccessNagbarReason = null;
} }
private resolveLinuxInputAccessNagbar(): void {
this.clearLinuxInputAccessNagbarRequest();
this._linuxInputAccessNagbarDismissedThisSession = false;
}
async recheckInputMonitoring(): Promise<NativePermissionResult> { async recheckInputMonitoring(): Promise<NativePermissionResult> {
return MacPermissions.refreshKind('input-monitoring'); return MacPermissions.refreshKind('input-monitoring');
} }
@@ -154,7 +167,7 @@ class NativePermission {
if (nextStatus === 'granted') { if (nextStatus === 'granted') {
this._linuxInputAccessGrantNeedsRelogin = false; this._linuxInputAccessGrantNeedsRelogin = false;
this._linuxInputAccessGrantError = null; this._linuxInputAccessGrantError = null;
this.dismissLinuxInputAccessNagbar(); this.resolveLinuxInputAccessNagbar();
} }
}); });
logger.debug('Rechecked Linux input access', {status: nextStatus}); logger.debug('Rechecked Linux input access', {status: nextStatus});
@@ -187,7 +200,7 @@ class NativePermission {
this._linuxInputAccessGrantError = result.success ? null : (result.error ?? 'Input access could not be enabled'); this._linuxInputAccessGrantError = result.success ? null : (result.error ?? 'Input access could not be enabled');
this._linuxInputAccessStatus = nextStatus; this._linuxInputAccessStatus = nextStatus;
if (nextStatus === 'granted') { if (nextStatus === 'granted') {
this.dismissLinuxInputAccessNagbar(); this.resolveLinuxInputAccessNagbar();
} }
}); });
return result; return result;