From 5586d34293dd0554a4f1dcd0267e8318cbbca577 Mon Sep 17 00:00:00 2001 From: Hampus Date: Sun, 30 Aug 2026 23:11:57 +0200 Subject: [PATCH] fix(app): preserve input access nagbar dismissal (#2189) --- .../system/state/NativePermission.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/fluxer_app/src/features/permissions/system/state/NativePermission.ts b/fluxer_app/src/features/permissions/system/state/NativePermission.ts index bf791ac1a..1b058419c 100644 --- a/fluxer_app/src/features/permissions/system/state/NativePermission.ts +++ b/fluxer_app/src/features/permissions/system/state/NativePermission.ts @@ -20,6 +20,7 @@ class NativePermission { private _linuxFlatpak = false; private _linuxInputAccessStatus: LinuxInputAccessStatus = 'unknown'; private _linuxInputAccessNagbarRequested = false; + private _linuxInputAccessNagbarDismissedThisSession = false; private _linuxInputAccessNagbarReason: LinuxInputAccessNagbarReason | null = null; private _linuxInputAccessGrantNeedsRelogin = false; private _linuxInputAccessGrantError: string | null = null; @@ -118,6 +119,7 @@ class NativePermission { get shouldShowLinuxInputAccessNagbar(): boolean { return ( this._linuxInputAccessNagbarRequested && + !this._linuxInputAccessNagbarDismissedThisSession && this._isDesktop && this._platform === 'linux' && this._waylandSession && @@ -126,15 +128,26 @@ class NativePermission { } requestLinuxInputAccessNagbar(reason: LinuxInputAccessNagbarReason): void { + if (this._linuxInputAccessNagbarDismissedThisSession) return; this._linuxInputAccessNagbarRequested = true; this._linuxInputAccessNagbarReason = reason; } dismissLinuxInputAccessNagbar(): void { + this._linuxInputAccessNagbarDismissedThisSession = true; + this.clearLinuxInputAccessNagbarRequest(); + } + + private clearLinuxInputAccessNagbarRequest(): void { this._linuxInputAccessNagbarRequested = false; this._linuxInputAccessNagbarReason = null; } + private resolveLinuxInputAccessNagbar(): void { + this.clearLinuxInputAccessNagbarRequest(); + this._linuxInputAccessNagbarDismissedThisSession = false; + } + async recheckInputMonitoring(): Promise { return MacPermissions.refreshKind('input-monitoring'); } @@ -154,7 +167,7 @@ class NativePermission { if (nextStatus === 'granted') { this._linuxInputAccessGrantNeedsRelogin = false; this._linuxInputAccessGrantError = null; - this.dismissLinuxInputAccessNagbar(); + this.resolveLinuxInputAccessNagbar(); } }); 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._linuxInputAccessStatus = nextStatus; if (nextStatus === 'granted') { - this.dismissLinuxInputAccessNagbar(); + this.resolveLinuxInputAccessNagbar(); } }); return result;