From 45bdde951fbee781538763f74ea5d50a8def969b Mon Sep 17 00:00:00 2001 From: akashnimare Date: Tue, 3 Oct 2017 03:29:52 +0530 Subject: [PATCH] Add a red circle over dock icon for PMs This will show a small red circle over the dock icon. This is to notify user that they have PMs in unread messages. --- app/renderer/js/components/webview.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/app/renderer/js/components/webview.js b/app/renderer/js/components/webview.js index d6bd3d6d..6f977c4e 100644 --- a/app/renderer/js/components/webview.js +++ b/app/renderer/js/components/webview.js @@ -6,7 +6,7 @@ const fs = require('fs'); const DomainUtil = require(__dirname + '/../utils/domain-util.js'); const SystemUtil = require(__dirname + '/../utils/system-util.js'); const LinkUtil = require(__dirname + '/../utils/link-util.js'); -const {shell} = require('electron').remote; +const { shell, app } = require('electron').remote; const BaseComponent = require(__dirname + '/../components/base.js'); @@ -42,7 +42,7 @@ class WebView extends BaseComponent { registerListeners() { this.$el.addEventListener('new-window', event => { - const {url} = event; + const { url } = event; const domainPrefix = DomainUtil.getDomain(this.props.index).url; if (LinkUtil.isInternal(domainPrefix, url) || url === (domainPrefix + '/')) { @@ -55,11 +55,20 @@ class WebView extends BaseComponent { }); this.$el.addEventListener('page-title-updated', event => { - const {title} = event; + const { title } = event; this.badgeCount = this.getBadgeCount(title); this.props.onTitleChange(); }); + this.$el.addEventListener('page-favicon-updated', event => { + const { favicons } = event; + // This returns a string of favicons URL. If there is a PM counts in unread messages then the URL would be like + // https://chat.zulip.org/static/images/favicon/favicon-pms.png + if (favicons[0].indexOf('favicon-pms') > 0) { + app.dock.setBadge('●'); + } + }); + this.$el.addEventListener('dom-ready', () => { if (this.props.role === 'server') { this.$el.classList.add('onload'); @@ -68,7 +77,7 @@ class WebView extends BaseComponent { }); this.$el.addEventListener('did-fail-load', event => { - const {errorDescription} = event; + const { errorDescription } = event; const hasConnectivityErr = (SystemUtil.connectivityERR.indexOf(errorDescription) >= 0); if (hasConnectivityErr) { console.error('error', errorDescription);