From 762c4dbbac47982f2c7adea2af220b84624b8e4c Mon Sep 17 00:00:00 2001 From: Yuya Ochiai Date: Wed, 23 Dec 2015 17:06:17 +0900 Subject: [PATCH] Show unread badge on application icon --- src/browser/index.jsx | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/browser/index.jsx b/src/browser/index.jsx index 86f9ae5e..6d1480a9 100644 --- a/src/browser/index.jsx +++ b/src/browser/index.jsx @@ -13,6 +13,7 @@ const remote = electron.remote; const osLocale = require('os-locale'); const fs = require('fs'); const url = require('url'); +const path = require('path'); const settings = require('../common/settings'); @@ -34,6 +35,12 @@ var MainPage = React.createClass({ this.setState({ unreadCounts: counts }); + if (this.props.onUnreadCountChange) { + var c = counts.reduce(function(prev, curr) { + return prev + curr; + }); + this.props.onUnreadCountChange(c); + } }, visibleStyle: function(visible) { var visibility = visible ? 'initial' : 'hidden'; @@ -162,7 +169,28 @@ var MattermostView = React.createClass({ var configFile = remote.getGlobal('config-file'); var config = settings.readFileSync(configFile); +var showUnreadBadge = function(unreadCount) { + switch (process.platform) { + case 'win32': + var window = remote.getCurrentWindow(); + if (unreadCount > 0) { + window.setOverlayIcon(path.join(__dirname, '../resources/badge.png'), 'You have unread channels.'); + } else { + window.setOverlayIcon(null, ''); + } + break; + case 'darwin': + if (unreadCount > 0) { + remote.app.dock.setBadge(unreadCount.toString()); + } else { + remote.app.dock.setBadge(''); + } + break; + default: + } +} + ReactDOM.render( - , + , document.getElementById('content') );