mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 21:15:32 +09:00
fix(app): preserve input access nagbar dismissal (#2189)
This commit is contained in:
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;
|
||||||
|
|||||||
Reference in new issue
Block a user