From c461770274a9822622c76696ad5d1313ea67898b Mon Sep 17 00:00:00 2001 From: Devin Binnie <52460000+devinbinnie@users.noreply.github.com> Date: Mon, 19 Apr 2021 14:33:04 -0400 Subject: [PATCH] [MM-34594] Only show dock badge when the setting is enabled (#1538) * [MM-34594] Only show dock badge when the setting is enabled * Fixed a potential crash --- src/main/appState.js | 2 +- src/main/badge.js | 11 +++++++++-- src/main/main.js | 6 ++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/appState.js b/src/main/appState.js index dc3be8ef..6f733efb 100644 --- a/src/main/appState.js +++ b/src/main/appState.js @@ -32,7 +32,7 @@ const emitBadge = (expired, mentions, unreads) => { status.emitter.emit(UPDATE_BADGE, expired, mentions, unreads); }; -const emitStatus = () => { +export const emitStatus = () => { const expired = anyExpired(); const mentions = totalMentions(); const unreads = anyUnreads(); diff --git a/src/main/badge.js b/src/main/badge.js index 346fa9ff..f9af54a1 100644 --- a/src/main/badge.js +++ b/src/main/badge.js @@ -10,6 +10,8 @@ import * as AppState from './appState'; const MAX_WIN_COUNT = 99; +let showUnreadBadgeSetting; + function showBadgeWindows(sessionExpired, showUnreadBadge, mentionCount) { let description = 'You have no unread messages'; let text; @@ -19,7 +21,7 @@ function showBadgeWindows(sessionExpired, showUnreadBadge, mentionCount) { } else if (mentionCount > 0) { text = (mentionCount > MAX_WIN_COUNT) ? `${MAX_WIN_COUNT}+` : mentionCount.toString(); description = `You have unread mentions (${mentionCount})`; - } else if (showUnreadBadge) { + } else if (showUnreadBadge && showUnreadBadgeSetting) { text = '•'; description = 'You have unread channels'; } @@ -32,7 +34,7 @@ function showBadgeOSX(sessionExpired, showUnreadBadge, mentionCount) { badge = '•'; } else if (mentionCount > 0) { badge = mentionCount.toString(); - } else if (showUnreadBadge) { + } else if (showUnreadBadge && showUnreadBadgeSetting) { badge = '•'; } app.dock.setBadge(badge); @@ -59,6 +61,11 @@ function showBadge(sessionExpired, mentionCount, showUnreadBadge) { } } +export function setUnreadBadgeSetting(showUnreadBadge) { + showUnreadBadgeSetting = showUnreadBadge; + AppState.emitStatus(); +} + export function setupBadge() { AppState.on(UPDATE_BADGE, showBadge); } diff --git a/src/main/main.js b/src/main/main.js index dd341b44..f80ec1e8 100644 --- a/src/main/main.js +++ b/src/main/main.js @@ -55,7 +55,7 @@ import {getLocalURLString, getLocalPreload} from './utils'; import {destroyTray, refreshTrayImages, setTrayMenu, setupTray} from './tray/tray'; import {AuthManager} from './authManager'; import {CertificateManager} from './certificateManager'; -import {setupBadge} from './badge'; +import {setupBadge, setUnreadBadgeSetting} from './badge'; if (process.env.NODE_ENV !== 'production' && module.hot) { module.hot.accept(); @@ -247,6 +247,7 @@ function handleConfigUpdate(newConfig) { log.error('error:', err); }); WindowManager.setConfig(newConfig.data); + setUnreadBadgeSetting(newConfig.data && newConfig.data.showUnreadBadge); } ipcMain.emit('update-menu', true, config); @@ -255,6 +256,7 @@ function handleConfigUpdate(newConfig) { function handleConfigSynchronize() { // TODO: send this to server manager WindowManager.setConfig(config.data); + setUnreadBadgeSetting(config.data.showUnreadBadge); if (app.isReady()) { WindowManager.sendToRenderer(RELOAD_CONFIGURATION); } @@ -514,7 +516,7 @@ function initializeAfterAppReady() { if (shouldShowTrayIcon()) { setupTray(config.trayIconTheme); } - setupBadge(); + setupBadge(config.showUnreadBadge); session.defaultSession.on('will-download', (event, item, webContents) => { const filename = item.getFilename();