diff --git a/src/browser/webview/mattermost.js b/src/browser/webview/mattermost.js index ba9500c4..353efce5 100644 --- a/src/browser/webview/mattermost.js +++ b/src/browser/webview/mattermost.js @@ -97,39 +97,23 @@ function isElementVisible(elem) { return elem.offsetHeight !== 0; } -// On Windows 8.1 and Windows 8, a shortcut with a Application User Model ID must be installed to the Start screen. -// In current version, use tray balloon for notification -function isLowerThanOrEqualWindows8_1() { - if (process.platform != 'win32') { - return false; - } - var osVersion = require('../../common/osVersion'); - return (osVersion.major <= 6 && osVersion.minor <= 3); -}; - -if (process.platform === 'win32' && isLowerThanOrEqualWindows8_1()) { - // Show balloon when notified. - notification.override({ - notification: function(title, options) { - ipc.send('notified', { - title: title, - options: options - }); - } - }); -} -else { +notification.override({ + // Send a notification event to the main process. + notification: function(title, options) { + ipc.send('notified', { + title: title, + options: options + }); + }, // Show window even if it is hidden/minimized when notification is clicked. - notification.override({ - onclick: function() { - if (process.platform === 'win32') { - // show() breaks Aero Snap state. - electron.remote.getCurrentWindow().focus(); - } - else { - electron.remote.getCurrentWindow().show(); - } - ipc.sendToHost('onNotificationClick'); + onclick: function() { + if (process.platform === 'win32') { + // show() breaks Aero Snap state. + electron.remote.getCurrentWindow().focus(); } - }); -} + else { + electron.remote.getCurrentWindow().show(); + } + ipc.sendToHost('onNotificationClick'); + } +}); diff --git a/src/common/osVersion.js b/src/common/osVersion.js index 8b320fbb..5be0c495 100644 --- a/src/common/osVersion.js +++ b/src/common/osVersion.js @@ -3,5 +3,12 @@ var release_split = os.release().split('.'); module.exports = { major: parseInt(release_split[0]), - minor: parseInt(release_split[1]) + minor: parseInt(release_split[1]), + isLowerThanOrEqualWindows8_1: function() { + if (process.platform != 'win32') { + return false; + } + // consider Windows 7 and later. + return (this.major <= 6 && this.minor <= 3); + } }; diff --git a/src/main.js b/src/main.js index 703a746a..11de4d01 100644 --- a/src/main.js +++ b/src/main.js @@ -14,6 +14,7 @@ const fs = require('fs'); const path = require('path'); var settings = require('./common/settings'); +const osVersion = require('./common/osVersion'); var certificateStore = require('./main/certificateStore').load(path.resolve(app.getPath('userData'), 'certificate.json')); var appMenu = require('./main/menus/app'); const allowProtocolDialog = require('./main/allowProtocolDialog'); @@ -184,15 +185,19 @@ app.on('ready', function() { mainWindow.focus(); }); ipc.on('notified', function(event, arg) { - trayIcon.displayBalloon({ - icon: path.resolve(__dirname, 'resources/appicon.png'), - title: arg.title, - content: arg.options.body - }); - - /* Todo: add idle here */ - if (config.notifications.flashWindow == 2) { - mainWindow.flashFrame(true); + if (process.platform === 'win32') { + if (config.notifications.flashWindow === 2) { + mainWindow.flashFrame(true); + } + // On Windows 8.1 and Windows 8, a shortcut with a Application User Model ID must be installed to the Start screen. + // In current version, use tray balloon for notification + if (osVersion.isLowerThanOrEqualWindows8_1()) { + trayIcon.displayBalloon({ + icon: path.resolve(__dirname, 'resources/appicon.png'), + title: arg.title, + content: arg.options.body + }); + } } }); @@ -215,7 +220,6 @@ app.on('ready', function() { else { trayIcon.setImage(trayImages.normal); trayIcon.setToolTip(app.getName()); - mainWindow.flashFrame(false); } }); }