From 216674a6733de5be97c8c05cc32c5ec671c5c617 Mon Sep 17 00:00:00 2001 From: Tasos Boulis Date: Wed, 16 Nov 2022 11:50:53 +0200 Subject: [PATCH] Fix issue with windows-focus-assist returning truthy value on older windows versions (#2385) --- src/main/notifications/dnd-linux.ts | 3 +++ src/main/notifications/dnd-windows.ts | 33 +++++++++++++++++++++++++++ src/main/notifications/index.ts | 10 ++------ 3 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 src/main/notifications/dnd-windows.ts diff --git a/src/main/notifications/dnd-linux.ts b/src/main/notifications/dnd-linux.ts index 8ab6a962..f103aa2a 100644 --- a/src/main/notifications/dnd-linux.ts +++ b/src/main/notifications/dnd-linux.ts @@ -9,6 +9,9 @@ const GNOME_READ_DND = 'gsettings get org.gnome.desktop.notifications show-banne function getLinuxDoNotDisturb() { try { + if (process.platform !== 'linux') { + return false; + } const showNotifications = execSync(GNOME_READ_DND).toString().replace('\n', ''); log.debug('getLinuxDoNotDisturb', {showNotifications}); diff --git a/src/main/notifications/dnd-windows.ts b/src/main/notifications/dnd-windows.ts new file mode 100644 index 00000000..19e6afb7 --- /dev/null +++ b/src/main/notifications/dnd-windows.ts @@ -0,0 +1,33 @@ +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import {getFocusAssist, isPriority} from 'windows-focus-assist'; + +/** + -2: NOT_SUPPORTED, + -1: FAILED, + 0: Off, + 1: PRIORITY_ONLY, + 2: ALARMS_ONLY +*/ +function getWindowsDoNotDisturb() { + if (process.platform !== 'win32') { + return false; + } + + const focusAssistValue = getFocusAssist().value; + switch (focusAssistValue) { + case 2: + return true; + case 1: + return !isPriority('Mattermost.Desktop'); + case 0: + case -1: + case -2: + return false; + default: + return focusAssistValue; + } +} + +export default getWindowsDoNotDisturb; diff --git a/src/main/notifications/index.ts b/src/main/notifications/index.ts index f869befe..769d3dc4 100644 --- a/src/main/notifications/index.ts +++ b/src/main/notifications/index.ts @@ -4,7 +4,6 @@ import {shell, Notification} from 'electron'; import log from 'electron-log'; -import {getFocusAssist, isPriority} from 'windows-focus-assist'; import {getDoNotDisturb as getDarwinDoNotDisturb} from 'macos-notification-state'; import {MentionData} from 'types/notification'; @@ -18,6 +17,7 @@ import {Mention} from './Mention'; import {DownloadNotification} from './Download'; import {NewVersionNotification, UpgradeNotification} from './Upgrade'; import getLinuxDoNotDisturb from './dnd-linux'; +import getWindowsDoNotDisturb from './dnd-windows'; export const currentNotifications = new Map(); @@ -140,13 +140,7 @@ export function displayRestartToUpgrade(version: string, handleUpgrade: () => vo function getDoNotDisturb() { if (process.platform === 'win32') { - const focusAssistValue = getFocusAssist().value; - switch (focusAssistValue) { - case 1: - return !isPriority('Mattermost.Desktop'); - default: - return focusAssistValue; - } + return getWindowsDoNotDisturb(); } if (process.platform === 'darwin') {