From d80de2a61043c12c2e16cd1fe010ef5a40bd564d Mon Sep 17 00:00:00 2001 From: Maxime Myers Date: Sun, 17 Sep 2017 11:24:05 -0400 Subject: [PATCH] Add tabs service icon loading (slack) --- app/util/IconLoader.js | 32 ++++++++++++++++++++++++++++++++ app/ux/WebView.js | 13 ++++++++----- 2 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 app/util/IconLoader.js diff --git a/app/util/IconLoader.js b/app/util/IconLoader.js new file mode 100644 index 00000000..b4f0349b --- /dev/null +++ b/app/util/IconLoader.js @@ -0,0 +1,32 @@ +/** + * Singleton class to handle the global unread counter. + */ +Ext.define('Rambox.util.IconLoader', { + + singleton: true, + + constructor: function(config) { + + config = config || {}; + + /** + * Sets the icon for a specific service. + * + * @param {*} id Id of the service + */ + this.loadServiceIconUrl = function (service, webview) { + switch (service.type) { + case 'slack': + webview.executeJavaScript("(()=>{let a=document.querySelector('.team_icon');if(!a){const d=document.querySelector('#team_menu');d&&(d.click(),a=document.querySelector('.team_icon'))}if(!a)return!1;const{style:{backgroundImage:b}}=a,c=document.createEvent('MouseEvents');return c.initEvent('mousedown',!0,!0),document.querySelector('.client_channels_list_container').dispatchEvent(c),b.slice(5,-2)})();", + false, + function (backgroundImage) { + if (backgroundImage) { + service.fireEvent('iconchange', service, backgroundImage, service.icon); + } + } + ); + break; + } + }; + } +}); diff --git a/app/ux/WebView.js b/app/ux/WebView.js index da8c6f8b..3abc58c4 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -8,7 +8,8 @@ Ext.define('Rambox.ux.WebView',{ ,requires: [ 'Rambox.util.Format' ,'Rambox.util.Notifier' - ,'Rambox.util.UnreadCounter' + ,'Rambox.util.UnreadCounter' + ,'Rambox.util.IconLoader' ] // private @@ -250,11 +251,13 @@ Ext.define('Rambox.ux.WebView',{ Rambox.app.setTotalServicesLoaded( Rambox.app.getTotalServicesLoaded() + 1 ); // Apply saved zoom level - webview.setZoomLevel(me.record.get('zoomLevel')); + webview.setZoomLevel(me.record.get('zoomLevel')); + + Rambox.util.IconLoader.loadServiceIconUrl(me, webview); }); // Open links in default browser - webview.addEventListener('new-window', function(e) { + webview.addEventListener('new-window', function(e) { switch ( me.type ) { case 'skype': // hack to fix multiple browser tabs on Skype link click, re #11 @@ -338,12 +341,12 @@ Ext.define('Rambox.ux.WebView',{ require('electron').shell.openExternal(e.url); } }); - + webview.addEventListener('will-navigate', function(e, url) { e.preventDefault(); }); - webview.addEventListener("dom-ready", function(e) { + webview.addEventListener("dom-ready", function(e) { // Mute Webview if ( me.record.get('muted') || localStorage.getItem('locked') || JSON.parse(localStorage.getItem('dontDisturb')) ) me.setAudioMuted(true, true);