From de1f24af61930350fa950848dfe486060c19a0e5 Mon Sep 17 00:00:00 2001 From: saenzramiro Date: Sun, 3 Jul 2016 18:29:59 -0300 Subject: [PATCH 01/22] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cce47947..433a53f5 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ [![Gitter](https://badges.gitter.im/saenzramiro/rambox.svg)](https://gitter.im/saenzramiro/rambox?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![license:mit](https://img.shields.io/badge/license-mit-blue.svg)](https://opensource.org/licenses/MIT) -Free and Open Source messaging app that combines chat and messaging common services into one application. +Free and Open Source messaging and emailing app that combines common web applications into one. Available for Windows, Mac and Linux. From d3ccf9dc08661681cb86d5e7ad8f22584d93691f Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 13:56:09 -0300 Subject: [PATCH 02/22] Fixed Open several tabs on click URL - Fixed #28 - Fixed #11 - Fixed #6 - Fixed #18 --- app/ux/WebView.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/app/ux/WebView.js b/app/ux/WebView.js index 4dbd6d77..13d39897 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -79,23 +79,23 @@ Ext.define('Rambox.ux.WebView',{ } }); + // Open links in default browser + webview.addEventListener('new-window', function(e) { + const protocol = require('url').parse(e.url).protocol; + if (protocol === 'http:' || protocol === 'https:' || protocol === 'mailto:') { + e.preventDefault(); + require('electron').shell.openExternal(e.url); + } + }); + + webview.addEventListener('will-navigate', function(e, url) { + e.preventDefault(); + }); + webview.addEventListener("dom-ready", function(e) { // Mute Webview if ( !webview.isAudioMuted() && me.muted ) webview.setAudioMuted(me.muted); - // Open links in default browser - webview.addEventListener('new-window', function(e) { - const protocol = require('url').parse(e.url).protocol; - if (protocol === 'http:' || protocol === 'https:') { - e.preventDefault(); - require('electron').shell.openExternal(e.url); - } - }); - - webview.addEventListener('will-navigate', function(e, url) { - e.preventDefault(); - }); - // Injected code to detect new messages if ( me.record && me.record.get('js_unread') !== '' ) { console.info('JS Injected', me.src); From c031db058ddefaf655365711993116571d105269 Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 14:10:18 -0300 Subject: [PATCH 03/22] Added mysms - Fixed #32 --- app/store/ServicesList.js | 8 ++++++++ resources/icons/mysms.png | Bin 0 -> 6580 bytes 2 files changed, 8 insertions(+) create mode 100644 resources/icons/mysms.png diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index 22208f8f..9a66c9ff 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -262,6 +262,14 @@ Ext.define('Rambox.store.ServicesList', { ,name: 'DingTalk' ,url: 'https://im.dingtalk.com/' ,type: 'messaging' + }, + { + id: 'mysms' + ,logo: 'mysms.png' + ,name: 'mysms' + ,url: 'https://app.mysms.com/' + ,type: 'messaging' + ,js_unread: 'function checkUnread(){var e=document.getElementsByClassName("unread"),t=0;for(i=0;i=1?document.title="("+e+") "+originalTitle:document.title=originalTitle}var originalTitle=document.title;setInterval(checkUnread,3000);' } ] }); diff --git a/resources/icons/mysms.png b/resources/icons/mysms.png new file mode 100644 index 0000000000000000000000000000000000000000..a99ae87e89b16fc286bda77bbf2a7a13af565602 GIT binary patch literal 6580 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 F{{!(ItAhXl literal 0 HcmV?d00001 From 9d3ffbd6078359b700b03c5b3902b3cf989b4e1a Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 14:11:09 -0300 Subject: [PATCH 04/22] Added ICQ service - Closes #47 --- app/store/ServicesList.js | 8 ++++++++ resources/icons/icq.png | Bin 0 -> 18163 bytes 2 files changed, 8 insertions(+) create mode 100644 resources/icons/icq.png diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index 9a66c9ff..c6452103 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -270,6 +270,14 @@ Ext.define('Rambox.store.ServicesList', { ,url: 'https://app.mysms.com/' ,type: 'messaging' ,js_unread: 'function checkUnread(){var e=document.getElementsByClassName("unread"),t=0;for(i=0;i=1?document.title="("+e+") "+originalTitle:document.title=originalTitle}var originalTitle=document.title;setInterval(checkUnread,3000);' + }, + { + id: 'icq' + ,logo: 'icq.png' + ,name: 'ICQ' + ,url: 'https://web.icq.com/' + ,type: 'messaging' + ,js_unread: 'function checkUnread(){updateBadge(parseInt(document.getElementsByClassName("nwa-msg-counter")[0].style.display==="block"?document.getElementsByClassName("nwa-msg-counter")[0].innerHTML.trim():0))}function updateBadge(e){e>=1?document.title="("+e+") "+originalTitle:document.title=originalTitle}var originalTitle=document.title;setInterval(checkUnread,3000);' } ] }); diff --git a/resources/icons/icq.png b/resources/icons/icq.png new file mode 100644 index 0000000000000000000000000000000000000000..c6f9ca4c896261fc75c2a6b05ec9b91e713bbcb3 GIT binary patch literal 18163 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 e$2A}{@c#g@cd#`4xVI|+0000 Date: Mon, 4 Jul 2016 14:11:36 -0300 Subject: [PATCH 05/22] Added TweetDeck - Fixed #16 --- app/store/ServicesList.js | 7 +++++++ resources/icons/tweetdeck.png | Bin 0 -> 8597 bytes 2 files changed, 7 insertions(+) create mode 100644 resources/icons/tweetdeck.png diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index c6452103..f350f269 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -278,6 +278,13 @@ Ext.define('Rambox.store.ServicesList', { ,url: 'https://web.icq.com/' ,type: 'messaging' ,js_unread: 'function checkUnread(){updateBadge(parseInt(document.getElementsByClassName("nwa-msg-counter")[0].style.display==="block"?document.getElementsByClassName("nwa-msg-counter")[0].innerHTML.trim():0))}function updateBadge(e){e>=1?document.title="("+e+") "+originalTitle:document.title=originalTitle}var originalTitle=document.title;setInterval(checkUnread,3000);' + }, + { + id: 'tweetdeck' + ,logo: 'tweetdeck.png' + ,name: 'TweetDeck' + ,url: 'https://tweetdeck.twitter.com/' + ,type: 'messaging' } ] }); diff --git a/resources/icons/tweetdeck.png b/resources/icons/tweetdeck.png new file mode 100644 index 0000000000000000000000000000000000000000..aec5061344cf70d573fee7c166328b559d99613a GIT binary patch literal 8597 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

^(?47WlfnbU@Lj?k4IFp0!9acfdi!3kHo$sbE55 zZ%X23}5cub!Nw`IGZTBH)vT&W3Tb0BHtrgUk zLxPYi&)0kN)<>+o*R;{xT*lX?it^jdA*c^IIYTJBt~DGi9C5@ZP?9Jv=8BiKXQYpD z6v*>;QIa|GT^)4NmK^RP>~ZflQ>?!=-q*51sVM%_M1YAU&2ZXF4ha~`XKuW_l+4cV z5Bkxe(#Dj+AUkyQ+gumD9%#Gr*gVI|tGUu)9dUS6aD09XPRIr$EjiEm^vVYoWP{_# z<`}2Zr*f~*;rR88_ogWdL1W@yxtt z>xhwL@`ATBWK$(!pN42R)w)_&1FMYlx!y}wQt6$!*XU^92m~oH&+bt|aSb=#Dv6p7 zwhx7)j8$kL=wuNQF$Vr$oq#N_U4YXA^R+pl*wv`LfH;81B1 zjy&S;xlVyxS^PL^Q=c4g$#(j98xt!|&c97f4#-eoch&vGh)4KVnBOzu z5cTkQ&HZ@(*gy+$1JS@2ioV{Ls?7dzxKI;`rO>p%c&{J&zV2lrgS}rjf~Lgyu$fSz zHaM;&SMc@`S908l(vozCm{aP_>pA#L!h!b1m@>f%ntpZl!?o79&s)E!(}X;O3sit# z>DUfCtH4W!aD~L>}^w zUVbbgx&;Vd_JQRAQT#SEgw&g=Vf389dhsB35Ui9!R9cR0sE3>jG=dBsqPQ=J0`yb$ z5+eBj!Zwtp*_4Qz5}m?*dg%P_MPJ`Em0yHH-+`T8t{i+!#`c=pL%cC8m)+bYdfsdp zDM$h^F9yi(l#4F!3SP*S=x*Mk{-qD!(THAOI$C<_&9 zrTHr0KSe$q0OD;+&1F~q<%4~NGa^p`3G4v<`LCgmbMFsqEP<7p)~fvb`9V%fQL Date: Mon, 4 Jul 2016 19:00:01 -0300 Subject: [PATCH 06/22] Improved edit action for Custom Services - Fixes #30. --- app/model/Service.js | 3 - app/store/Services.js | 2 +- app/view/main/Main.js | 2 +- app/view/main/MainController.js | 198 +++++++++++++++++++------------- 4 files changed, 122 insertions(+), 83 deletions(-) diff --git a/app/model/Service.js b/app/model/Service.js index ad5db198..da0127b9 100644 --- a/app/model/Service.js +++ b/app/model/Service.js @@ -22,9 +22,6 @@ Ext.define('Rambox.model.Service', { },{ name: 'logo' ,type: 'string' - ,convert: function( value, record ) { - return value ? value : record.get('type') + '.png'; - } },{ name: 'name' ,type: 'string' diff --git a/app/store/Services.js b/app/store/Services.js index b47b78b8..b7de20d8 100644 --- a/app/store/Services.js +++ b/app/store/Services.js @@ -33,7 +33,7 @@ Ext.define('Rambox.store.Services', { xtype: 'webview' ,id: 'tab_'+service.get('id') ,title: service.get('name') - ,icon: service.get('type') !== 'custom' ? 'resources/icons/'+service.get('logo') : service.get('logo') + ,icon: service.get('type') !== 'custom' ? 'resources/icons/'+service.get('logo') : ( service.get('logo') === '' ? 'resources/icons/custom.png' : service.get('logo')) ,src: service.get('url') ,type: service.get('type') ,muted: service.get('muted') diff --git a/app/view/main/Main.js b/app/view/main/Main.js index fd0265f1..4d4f986b 100644 --- a/app/view/main/Main.js +++ b/app/view/main/Main.js @@ -148,7 +148,7 @@ Ext.define('Rambox.view.main.Main', { xtype: 'templatecolumn' ,width: 50 ,variableRowHeight: true - ,tpl: '' + ,tpl: '' } ,{ text: 'Name', dataIndex: 'name', variableRowHeight: true, flex: 1 } ,{ diff --git a/app/view/main/MainController.js b/app/view/main/MainController.js index a5125ca5..bfbd61f1 100644 --- a/app/view/main/MainController.js +++ b/app/view/main/MainController.js @@ -105,6 +105,7 @@ Ext.define('Rambox.view.main.MainController', { } else { var service = Ext.create('Rambox.model.Service', { type: record.get('id') + ,logo: record.get('logo') ,name: formValues.serviceName ,url: record.get('url') ,align: formValues.align @@ -149,11 +150,11 @@ Ext.define('Rambox.view.main.MainController', { win.down('textfield[name="serviceName"]').focus(true, 100); } - ,showCustomModal: function(record) { + ,showCustomModal: function(record, edit) { var me = this; var win = Ext.create('Ext.window.Window', { - title: 'Add '+record.get('name') + title: (edit ? 'Edit ' : 'Add ') + record.get('name') ,modal: true ,width: 400 ,resizable: false @@ -210,7 +211,7 @@ Ext.define('Rambox.view.main.MainController', { { xtype: 'checkbox' ,boxLabel: 'Align to Right' - ,checked: false + ,checked: edit ? (record.get('align') === 'right' ? true : false) : false ,name: 'align' ,uncheckedValue: 'left' ,inputValue: 'right' @@ -219,7 +220,7 @@ Ext.define('Rambox.view.main.MainController', { xtype: 'checkbox' ,boxLabel: 'Show notifications' ,name: 'notifications' - ,checked: true + ,checked: edit ? record.get('notifications') : true ,uncheckedValue: false ,inputValue: true } @@ -227,7 +228,7 @@ Ext.define('Rambox.view.main.MainController', { xtype: 'checkbox' ,boxLabel: 'Mute all sounds' ,name: 'muted' - ,checked: false + ,checked: edit ? record.get('muted') : false ,uncheckedValue: false ,inputValue: true } @@ -253,39 +254,50 @@ Ext.define('Rambox.view.main.MainController', { var formValues = win.down('form').getValues(); - var service = Ext.create('Rambox.model.Service', { - type: record.get('id') - ,name: formValues.serviceName - ,url: record.get('url').replace('___', formValues.url) - ,align: formValues.align - ,notifications: formValues.notifications - ,muted: formValues.muted - ,js_unread: record.get('js_unread') - }); - service.save(); - Ext.getStore('Services').add(service); - - var tabData = { - xtype: 'webview' - ,id: 'tab_'+service.get('id') - ,title: service.get('name') - ,icon: 'resources/icons/'+record.get('logo') - ,src: service.get('url') - ,type: service.get('type') - ,align: formValues.align - ,notifications: formValues.notifications - ,muted: formValues.muted - ,record: service - ,tabConfig: { - service: service - } - }; - - if ( formValues.align === 'left' ) { - var tbfill = me.getView().getTabBar().down('tbfill'); - me.getView().insert(me.getView().getTabBar().items.indexOf(tbfill), tabData).show(); + if ( edit ) { + record.set({ + name: formValues.serviceName + ,align: formValues.align + ,notifications: formValues.notifications + ,muted: formValues.muted + }); + Ext.getCmp('tab_'+record.get('id')).setTitle(formValues.serviceName); } else { - me.getView().add(tabData).show(); + var service = Ext.create('Rambox.model.Service', { + type: record.get('id') + ,logo: record.get('logo') + ,name: formValues.serviceName + ,url: record.get('url').replace('___', formValues.url) + ,align: formValues.align + ,notifications: formValues.notifications + ,muted: formValues.muted + ,js_unread: record.get('js_unread') + }); + service.save(); + Ext.getStore('Services').add(service); + + var tabData = { + xtype: 'webview' + ,id: 'tab_'+service.get('id') + ,title: service.get('name') + ,icon: 'resources/icons/'+record.get('logo') + ,src: service.get('url') + ,type: service.get('type') + ,align: formValues.align + ,notifications: formValues.notifications + ,muted: formValues.muted + ,record: service + ,tabConfig: { + service: service + } + }; + + if ( formValues.align === 'left' ) { + var tbfill = me.getView().getTabBar().down('tbfill'); + me.getView().insert(me.getView().getTabBar().items.indexOf(tbfill), tabData).show(); + } else { + me.getView().add(tabData).show(); + } } win.close(); @@ -301,6 +313,8 @@ Ext.define('Rambox.view.main.MainController', { ,onNewServiceSelect: function( view, record, item, index, e ) { if ( record.get('url').indexOf('___') >= 0 ) { this.showCustomModal(record); + } else if ( record.get('type') === 'custom' ) { + this.addCustomService(record, false); } else { this.showSimpleModal(record, false); } @@ -355,14 +369,18 @@ Ext.define('Rambox.view.main.MainController', { } ,configureService: function( gridView, rowIndex, colIndex, col, e, rec, rowEl ) { - this.showSimpleModal(rec, true); + if ( rec.get('type') === 'custom' ) { + this.addCustomService(rec, true); + } else { + this.showSimpleModal(rec, true); + } } - ,addCustomService: function( event, toolEl, owner, tool ) { + ,addCustomService: function( record, edit ) { var me = this; var win = Ext.create('Ext.window.Window', { - title: 'Add Custom Service' + title: (edit ? 'Edit ' : 'Add ') + 'Custom Service' ,modal: true ,width: 400 ,resizable: false @@ -376,6 +394,7 @@ Ext.define('Rambox.view.main.MainController', { xtype: 'textfield' ,fieldLabel: 'Name' ,name: 'serviceName' + ,value: (edit ? record.get('name') : '') ,allowBlank: true ,listeners: { specialkey: function(field, e) { @@ -391,6 +410,7 @@ Ext.define('Rambox.view.main.MainController', { ,emptyText: 'http://service.url.com' ,name: 'url' ,vtype: 'url' + ,value: (edit ? record.get('url') : '') ,allowBlank: false ,listeners: { specialkey: function(field, e) { @@ -406,6 +426,7 @@ Ext.define('Rambox.view.main.MainController', { ,emptyText: 'http://image.url.com/image.png' ,name: 'logo' ,vtype: 'url' + ,value: (edit ? record.get('logo') : '') ,allowBlank: true ,listeners: { specialkey: function(field, e) { @@ -423,7 +444,7 @@ Ext.define('Rambox.view.main.MainController', { { xtype: 'checkbox' ,boxLabel: 'Align to Right' - ,checked: false + ,checked: edit ? (record.get('align') === 'right' ? true : false) : false ,name: 'align' ,uncheckedValue: 'left' ,inputValue: 'right' @@ -432,7 +453,7 @@ Ext.define('Rambox.view.main.MainController', { xtype: 'checkbox' ,boxLabel: 'Show notifications' ,name: 'notifications' - ,checked: true + ,checked: edit ? record.get('notifications') : true ,uncheckedValue: false ,inputValue: true } @@ -440,7 +461,7 @@ Ext.define('Rambox.view.main.MainController', { xtype: 'checkbox' ,boxLabel: 'Mute all sounds' ,name: 'muted' - ,checked: false + ,checked: edit ? record.get('muted') : false ,uncheckedValue: false ,inputValue: true } @@ -455,11 +476,11 @@ Ext.define('Rambox.view.main.MainController', { ,items: [ { xtype: 'textarea' - ,fieldLabel: 'Unread Code' + ,fieldLabel: 'Unread Code (read more)' ,allowBlank: true ,name: 'js_unread' + ,value: (edit ? record.get('js_unread') : '') ,anchor: '100%' - ,emptyText: 'Write code here if the service don\'t update the page title when have new activity. The code needs to return an integer, for example: document.body.getElementsByClassName("ee").length;' ,height: 120 } ] @@ -477,47 +498,68 @@ Ext.define('Rambox.view.main.MainController', { } ,'->' ,{ - text: 'Add service' + text: (edit ? 'Edit ' : 'Add ') + ' Service' ,itemId: 'submit' ,handler: function() { if ( !win.down('form').isValid() ) return false; var formValues = win.down('form').getValues(); - var service = Ext.create('Rambox.model.Service', { - type: 'custom' - ,logo: formValues.logo - ,name: formValues.serviceName - ,url: formValues.url - ,align: formValues.align - ,notifications: formValues.notifications - ,muted: formValues.muted - ,js_unread: 'function checkUnread(){updateBadge(' + formValues.js_unread + ')}function updateBadge(e){e>=1?document.title="("+e+") "+originalTitle:document.title=originalTitle}var originalTitle=document.title;setInterval(checkUnread,3000);' - }); - service.save(); - Ext.getStore('Services').add(service); - - var tabData = { - xtype: 'webview' - ,id: 'tab_'+service.get('id') - ,title: service.get('name') - ,icon: formValues.logo - ,src: service.get('url') - ,type: service.get('type') - ,align: formValues.align - ,notifications: formValues.notifications - ,muted: formValues.muted - ,record: service - ,tabConfig: { - service: service - } - }; + if ( edit ) { + // If users change the URL, we change the URL of the Webview + if ( record.get('url') !== formValues.url ) Ext.getCmp('tab_'+record.get('id')).down('component').el.dom.loadURL(formValues.url); + + // Save the service + record.set({ + name: formValues.serviceName + ,url: formValues.url + ,logo: formValues.logo + ,align: formValues.align + ,notifications: formValues.notifications + ,muted: formValues.muted + ,js_unread: formValues.js_unread + }); - if ( formValues.align === 'left' ) { - var tbfill = me.getView().getTabBar().down('tbfill'); - me.getView().insert(me.getView().getTabBar().items.indexOf(tbfill), tabData).show(); + // Change the title of the Tab + Ext.getCmp('tab_'+record.get('id')).setTitle(formValues.serviceName); + // Change the icon of the Tab + Ext.getCmp('tab_'+record.get('id')).setIcon(record.get('logo') === '' ? 'resources/icons/custom.png' : record.get('logo')); } else { - me.getView().add(tabData).show(); + var service = Ext.create('Rambox.model.Service', { + type: 'custom' + ,logo: formValues.logo + ,name: formValues.serviceName + ,url: formValues.url + ,align: formValues.align + ,notifications: formValues.notifications + ,muted: formValues.muted + ,js_unread: formValues.js_unread !== '' ? 'function checkUnread(){updateBadge(' + formValues.js_unread + ')}function updateBadge(e){e>=1?document.title="("+e+") "+originalTitle:document.title=originalTitle}var originalTitle=document.title;setInterval(checkUnread,3000);' : '' + }); + service.save(); + Ext.getStore('Services').add(service); + + var tabData = { + xtype: 'webview' + ,id: 'tab_'+service.get('id') + ,title: service.get('name') + ,icon: formValues.logo + ,src: service.get('url') + ,type: service.get('type') + ,align: formValues.align + ,notifications: formValues.notifications + ,muted: formValues.muted + ,record: service + ,tabConfig: { + service: service + } + }; + + if ( formValues.align === 'left' ) { + var tbfill = me.getView().getTabBar().down('tbfill'); + me.getView().insert(me.getView().getTabBar().items.indexOf(tbfill), tabData).show(); + } else { + me.getView().add(tabData).show(); + } } win.close(); From be168c0afbe945488dc4f8717bd470d6262a4ae6 Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 19:07:07 -0300 Subject: [PATCH 07/22] Moved Custom Service button inside list of services --- app/store/ServicesList.js | 6 ++++++ app/view/main/Main.js | 5 ----- app/view/main/MainController.js | 3 ++- resources/icons/custom.png | Bin 0 -> 5270 bytes 4 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 resources/icons/custom.png diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index f350f269..ab99652f 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -285,6 +285,12 @@ Ext.define('Rambox.store.ServicesList', { ,name: 'TweetDeck' ,url: 'https://tweetdeck.twitter.com/' ,type: 'messaging' + }, + { + id: 'custom' + ,logo: 'custom.png' + ,name: '_Custom Service' + ,type: 'custom' } ] }); diff --git a/app/view/main/Main.js b/app/view/main/Main.js index 4d4f986b..a9e34aba 100644 --- a/app/view/main/Main.js +++ b/app/view/main/Main.js @@ -101,11 +101,6 @@ Ext.define('Rambox.view.main.Main', { ,specialkey: 'onSearchEnter' } } - ,{ - type: 'plus' - ,tooltip: 'Add a custom service' - ,handler: 'addCustomService' - } ] ,items: [ { diff --git a/app/view/main/MainController.js b/app/view/main/MainController.js index bfbd61f1..8488f661 100644 --- a/app/view/main/MainController.js +++ b/app/view/main/MainController.js @@ -590,7 +590,7 @@ Ext.define('Rambox.view.main.MainController', { Ext.getStore('ServicesList').getFilters().replaceAll({ fn: function(record) { - return Ext.Array.contains(Ext.Object.getKeys(cg.getValue()), record.get('type')); + return Ext.Array.contains(Ext.Object.getKeys(cg.getValue()), record.get('type')) || record.get('type') === 'custom'; } }); } @@ -604,6 +604,7 @@ Ext.define('Rambox.view.main.MainController', { Ext.getStore('ServicesList').getFilters().replaceAll({ fn: function(record) { + if ( record.get('type') === 'custom' ) return true; if ( !Ext.Array.contains(Ext.Object.getKeys(cg.getValue()), record.get('type')) ) return false; return record.get('name').toLowerCase().indexOf(newValue.toLowerCase()) > -1 ? true : false; } diff --git a/resources/icons/custom.png b/resources/icons/custom.png new file mode 100644 index 0000000000000000000000000000000000000000..710acb6aa2f1abe3eea1cc19b8b33cf1ca513683 GIT binary patch literal 5270 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 literal 0 HcmV?d00001 From 761d1ba646fbd474b0c961b2d1783560553ec99f Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 19:10:43 -0300 Subject: [PATCH 08/22] Fixed onEnter functionality when search for services --- app/view/main/MainController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/view/main/MainController.js b/app/view/main/MainController.js index 8488f661..9f0d50c1 100644 --- a/app/view/main/MainController.js +++ b/app/view/main/MainController.js @@ -579,7 +579,7 @@ Ext.define('Rambox.view.main.MainController', { ,onSearchEnter: function( field, e ) { var me = this; - if ( e.getKey() == e.ENTER && Ext.getStore('ServicesList').getCount() === 1 ) { + if ( e.getKey() == e.ENTER && Ext.getStore('ServicesList').getCount() === 2 ) { // Two because we always shows Custom Service option me.onNewServiceSelect(field.up().down('dataview'), Ext.getStore('ServicesList').getAt(0)); me.onClearClick(field); } From 026196adf4e0823daccd8a9a68c6a0aea098f4ba Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 19:53:01 -0300 Subject: [PATCH 09/22] Added Zinc Service Fixes #53 --- app/store/ServicesList.js | 7 +++++++ resources/icons/zinc.png | Bin 0 -> 63521 bytes 2 files changed, 7 insertions(+) create mode 100644 resources/icons/zinc.png diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index ab99652f..d07d51a3 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -291,6 +291,13 @@ Ext.define('Rambox.store.ServicesList', { ,logo: 'custom.png' ,name: '_Custom Service' ,type: 'custom' + }, + { + id: 'zinc' + ,logo: 'zinc.png' + ,name: 'Zinc' + ,url: 'https://zinc-app.com/' + ,type: 'messaging' } ] }); diff --git a/resources/icons/zinc.png b/resources/icons/zinc.png new file mode 100644 index 0000000000000000000000000000000000000000..7991b6f9f26bd03b2dc4272eba58f5a5fe57706d GIT binary patch literal 63521 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

  • ;2 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 literal 0 HcmV?d00001 From ce435aa1016b230151a73c97d1af443b77f137a3 Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 19:53:36 -0300 Subject: [PATCH 10/22] Changed order of action buttons in "Enabled Services" --- app/view/main/Main.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/view/main/Main.js b/app/view/main/Main.js index a9e34aba..f778be43 100644 --- a/app/view/main/Main.js +++ b/app/view/main/Main.js @@ -173,17 +173,17 @@ Ext.define('Rambox.view.main.Main', { ,align: 'center' ,items: [ { - glyph: 0xf1f8 - ,tooltip: 'Remove' - ,handler: 'removeService' - ,getClass: function(){ return 'x-hidden-display'; } - } - ,{ glyph: 0xf013 ,tooltip: 'Configure' ,handler: 'configureService' ,getClass: function(){ return 'x-hidden-display'; } } + ,{ + glyph: 0xf1f8 + ,tooltip: 'Remove' + ,handler: 'removeService' + ,getClass: function(){ return 'x-hidden-display'; } + } ] } ] From 4be1ae095c6f79f0522ad0de87b3f6ced20f61fa Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 19:54:15 -0300 Subject: [PATCH 11/22] Renamed Office 365 to Outlook 365 --- app/store/ServicesList.js | 6 +++--- resources/icons/outlook365.png | Bin 0 -> 7374 bytes 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 resources/icons/outlook365.png diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index d07d51a3..d8b6c785 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -151,9 +151,9 @@ Ext.define('Rambox.store.ServicesList', { ,type: 'email' }, { - id: 'office365' - ,logo: 'office365.png' - ,name: 'Office 365' + id: 'outlook365' + ,logo: 'outlook365.png' + ,name: 'Outlook 365' ,url: 'https://outlook.office.com/owa/' ,type: 'email' }, diff --git a/resources/icons/outlook365.png b/resources/icons/outlook365.png new file mode 100644 index 0000000000000000000000000000000000000000..10765276f8563a8beb2db458e6f51b1dc8c84547 GIT binary patch literal 7374 zcmV;<95LgGP)hyWe}?efQmWpRic)-una^ z!F3B5g8+&HblkB*4rLRt6Ja-r*#mkhR^JTV4Oqa<;?q|R5jWjC*UwM|s2~E0pct%C zR2}qzi4^bv2;h7kYc?Zh8{Y0h3p-KS25bWAQ6O^RU`@|Ej}XoE1DrDy!3Y>*phHVk;gyb_OG>FlHN?-GLw43v5H#0W1SZtwAMxx{Vd~{QVwP!aR9l5iA1rf;zzs zI25Jqps9x#h?Yk9fpz#~8zMV_-3Z%I-HLO~FvtYTT6Xj*&A8z_HR)5u>=U4?URd2L z6f*{V>X50DpwOQlWWbml-fsf7B4!W5PF(+X(9MX{PkeDH3)?Wl1Y6w~TG*%_0UUxA z5F>bRU?4bWO9z!A3Z)T`S{mxHav_@8j=DW)X$Pv8AhHR_f~K~hY_$p33aAPD956Ek z5F_{@=xQ*yI^lvIB{M9bRLgVWuaiwJtnS-PG1`IXUX*R1J8-%V3Yl=wDC=Anwty_^ z_PQFF`bRvzMA*~?u^14+*x*o^dT3P#Ly%;{vFev2axtnq@X21(Zez*N4q~$k(V(rP znrx{M_TqNVW(&{%VO0gm2$@7EmV|=!EbH|20%)q?4jM8BS6InFZY$(2VaecL60<#Z z(3S&&iBkD0s6fpVpBEVZ*pVcXl$>y4jqsul!KDtB#!3m04CH}lmPTysT0>&C0lP3} z7wUIlvRi5PEyxfgW~?*rKozZd;`0sBfmduW2fzEICZJ%IwWpw1-fOc+v;ph3llYxD zcCxzf61;3dXaGVNtqheAUzc&+u9|Z;PZ1qF{In+%5s9l$N^TQ9%PwI>-%eC^0+)c> zgd>L-$N-XnA6D;Lw`+kTI`GQ%uRi$gqc_r!*+IsxXH{i=|YlnYHj3PBpe6b(`1_-9y0})aa_F_UrXur#*{Jb6Ys$pW(x?zhPH3BSh)CjQ1 zQ6s=2M~wiB95n(ga@6|!=Z=Ncbsm=-StG!?WBkOD`3nItR7`5A5nypaL0y!%FfWQ4 z0j7(x*?ZRKI}`HqmKt?_{aui0>SEe^2w zAYod3)QD!TtPx;wK~Wr5Goa6b{-j2L#RG>RWV~f4`WKL^4u1RT!!;k^{71PUhQ)K5 z&W86V@FmD_;6E;tnguw&5pp|KEZO8c3}s$QUGk;qbc3O(*Bt!rF|ApE^AjUlFLdGf zAVZnICYQi3mfHjzPpkoIk-+m2jv#o8lS4%Q-DLD}B4_BSgH2~f6}PGp;QT?Q)_0?F z3x?0*4R|bxapcAqHk)q*(2A{$$^gqk2(-*T!gM?fSkSwGcOv>IrO1#=z)W7!Zaxs8 zJWIG-jA^uxMJj9jlqamzoY#P$^;RuPFKRvv^4Xw1V#%n(PcnIH$jO0g*Uc#b%9=hh zOIV}_@1Fwcz!0MtoNva+24FSi`3ss>09@Qe2yMMlOEGhVUpKxBc$m%ICRLcpwcc1m zgYlm_a$?R1;6i~25tJtp{tuoboM`@cR-NtulHrn!8Vfxun!s&m<i-7MHGGeH{}(hA-vv^(7w0nxg7B3RR{sJoAEOvKyjZq$ zOkDFAAo9UyQgIl~;dnomn?W-O{j)`Yw7nMt`T=75G1d&gKrW)C;D7`JZ0aHuAsF=r z%F6z54K*I`h2u*sFhG%aWBilU$DhNWwtx?^uDK#q~rJvQFr&vz%!9JX=l+8htjM z)?QhxVqs&Xd*^|Vf&6zOU&QzzSTz%C{o^Zz$Om#<*jWdB5IDf-D(4nvr5h+7A6snw zXOP?{$*zqkJ?gmN)a2Q;$JPj&d!gW9@~m5B$v{Hg(fBdXjGE`X`Npkq*#0_#Rp@erG|+# zx+@my4A2-}?z9y)_gWw!9(1e%PUH=1`o=~HA?{Ur1)zjv{)CKcC%kC6P}M>~&`QN( zc!Xn1-vu0|AJ}jv72+g{AGKOMj-5D;7GKJ$!P}^dFC&f=(dX?dSCar95lhV901wl7 z(!$B{Z?I#DVOjd}{dKRRXnv2ivJ0p6I0neuf9JXESIOwV(a{L&dxmq`hmpt8mA5GO zA$%F-KQmh~g3wN%D-s|=1+4!JqPMWIyO*D>v|QNjDMS-XzG;QvW0O8ZJso`?U_;>m zDu&pmv6kom2Gt^fqFAD&i)ME#CK8sc9_)>|wBxt;sTY(!Gu1#B2SgbbTWh6K=HI&=p2*aZ!ypzP-1;8&> z1g(E^`NU^#>9h=-4jz78{nf++x3M(dhqIxrm$Q48>JUKjWWD8?mfL|7Jl!&Wjh(h* zLSn(QoW{bPD3{_S)EM-Yi7FD>bE9tsS&hnT@xzO^jF2E7d%E%lc$BO=gm698vjQO) zEqao{%vZ=KZ$L-2wP%BoW4-wT#(juLyHPCGdv-oMvDWv+f-4ycIF@g%r_}jj;@ooB1P}}fj)wj(Gn5l9JU#xHQWRGFi1}-TOA$(p4+Fx8GZzEb(U<)Y@R5`x zW151*qy)Mh<$9{=1B9`Ne(I7pg5Ckzl?-pq&Qgp#=xedO z4k2M;;a4IegpuEe)$L@wCsISC3~$bO5~FxI40NRLSKY~*$Ce65mwf}I) z0Tcv`d>41pqrDdGWz_cY3eSTpE&Z9BF}_?w_=Qkz_v`TH?RW!qPN;JXZ}o}C4+?&; z6ZJnz4M25Q`r6d3Z0w9ky1Vdt6Op!o{(zC;?NEYG#glawCr?na*Aknz5l3B!wPd{m zqay>O7280;f@lck+N;Uu+liw0h05D99lv7~s?h{kjD^1L9{^A~HG1!{?H0kYyl^#3 z3zspNQOsGJu0R6gevgM&e+cL%jz&9#J5Gh}W8{8>)oZD?1pp9}5VZ)d*WkGad>ck@ z!kG^sx)cEGp(ppZoM^lmIK{S3ON_@)(zhEd3X=BgRqLtC-h$2idH4duUAuE`;%1rv z!4r3`kGk9=0OaaM3t&q}_`e~!o~P2Xli&nJmxGdcHRmJWTLr9;q}x15t$v;HaQ^3=7AHqS}=>{+*(hSJuwDD~7|NL3)W6M%X*`ePP`%J(~t z&G!J4bfjkhUL}2p37Q#kJlkT}+@n|%V~UpD$0yhNfqaPZXPX?!;5FoOpT@{uR5i_s ztBNI?Spq0Z1axMC_MeGEdt64_(}CUIyolH|O_R$8t59GaKV4w}pROeogs}g)@^Sqr zrwIh8js-BH7zJsbcrD?L-jg(?>lNFHh3}%YY>PV3W~B5X@^$Y4s;2donCT`UIHsj2 zNTI)B^zH}JznhDzxu{DhSxt*mPYuEMUCx?;EKnG=Z&(*430;mVU_{?rNW?;47rCr~ z!uYWYfM}9o+azPLXB4 z3N~ydGabV}76wrncaKq9)wRd~Lx6(+Gn95p$xDd49Z@XMYoHhC4fAy}b(Y3ej(DH} z%O|nP;Z*o@Hs4{UZ&=o}U|B>)ZzBtk#4~WOgh~f<1S3LM&5ZkP=21>TOHkQ|wcjVx zcnjVOCg<@)NPPyMC`rF#@YKtwZ)hj7?+tzWbC2eo>%&(A>4zT^)6T6ATefvDEIT+^ z0{dBEfZ@f4E6AmBd9y&n2KHv{F=ecXcK)V8=8eAb0?byPf+jHkQkq4$-EF8LWGk;AkUIW zIu=lY7)RVE)Ytz;YL9Bde;&;I$59;CLvQ{Xdh_sPlk#K}!&_IZWQ-+m&tP+(!K)x= zm9ilmjvf}azX}>Z82uH4_VuXlV`S`pG9(BY68Ri(KgDRg_9t=pEuXsuXiRK?#|;iQP(P*EN(1 z-yKeE8irMxRX~UE<_1&`V_1!nFn)4pDrC(7?UbVT6I(MX(WH!(O%9Bq;Qjz#-BiH2 zz>2tw|I~3OH=O2sSpwG&n2Uit&;#;g z)ZdQA{|rDeD@1NQp-ejTU+lO!b#3OP^FNcgrssa%eCq4G>dX&_CYclZd}wroT-SA& z>$(o}RBkQbT6PWJT=q(S+O&Q6m@4*B)q}P4Kk;$k8is6nbZ)d@vUuE(p^tvx)4->x zuWv@Q4y7M-5Da9N2(A)qJD$CrcRYJL?Jbwd;r!*mfvN^6!aQ`bFQ;hVj^zs!ZN!8lcv(-22ojaMjOiFE zP#O{>F_gO8gbsZ}vq6@6hKAPQ;!j}~rsi)bp5PBp|0}=Wc_-_O&%N*o=YY1J2c)g% z0dB1_0U%7E^5on>oZL&~A0pE{2?+=lLrNWj$)?d>Lfmh%f(Z4?1lJ$BhQ@yh)wStB z%!1MW%lm)In@)X$>$;9m?}ujXzCE@PsD79-n0%!Xqj#YG8j|j(h;=d&07h|>?5aej z&QOX4a*m|uvmpNgSs234YRqqUxAUe`-{k7v|2HSkP#!^>jW~6=zy2cNPO?j`C(AEM z`YfuRsXA*(Mu>(J42x|S2eWBJXrH($nU zx(>6hbaGnPnXQ3}v~-DVCmFb#!q8iQ?*h=!V2KL=9?8IjgouP}Bs^h4nK*I@>ju{m z+0Wxjzso!q{+7bi{L!gz@cSKy&Z-+X8BSzZ@?hf*+M6%qo~Hf$BEJbBSdn>70Dw@% zQr&uT*+Yo=A9(kd#HC}y5ovWG5&}VDLPtW?gHwt{Wj&rG8$ZLOM#ELULJbW-C3VS5xm^kFqy(265=hm_#&D$)X~vV z#S`Z>N|GU~ljp!H!adFVxx3{`e%QR1NAsI0nAxaq6EK&_3KbbMM1*yC*9`BSAk?3h zkeTyD%9+G~&GW}wK1z4gJSX>`>uiVamlBYB+zOz>jMLSft2k5+A(liTmf153o>CuDw6m{D!kp zvU7C;rmV<09~TZ>xlL*WI2Q;8oss#6b1*B|D-W)nSG|CRgK|gJO99J0pjjrLg!tk~ zeh0v)x{SsTBV*^$o&Ce)d}%i!gKA1R_z7xj2Tu!rI3MvDBKIA!O9)sx3&(tiyw2-N2vYjaI+@>DX`J(E_ zUplQ!rjE8F)6RfORzFcAz_d{L$*l@@atm-aD43kc&G$@;MgOby8o93H$nBKACtBO}U+4Nk0s;C;5-n|z#3ceM6bg>87{deU_ICi(=a%Exfy!<~F9q2RTnscZ zewIq{g=6Zn6a2VBPb%QSn2Vpj6&*@OUt!~ z>J6T3_BgoXz@4Ekw`3VAy@+gnH^%P;fVXpVbw3XaI>^@m@V)_&i!r(zCwmdy19Azl zl8GmTmc8Ny?@zS0>pyg~Negf-@E+hd0N>FjKL;KMehEAY90N`OU9IiYs0ukv2shn3 z!&g*cs32q-1nVVT1$%tgQFR%}HsW{>QFebI1s4M?6I^vJoy^J^Kd&Ho?k~JJWclP< zuN?JvN1N;c-U7Ud;5(J!fiB=QffP>@ti>+~y@aQM&enDvH;bsFO@0cTeTC?No)s^? zcgf5rg{mlZc^#?o9DYPZu-;ITvM{?q@5M&6g`y$bpePRI1i=jc->}zZfK90GLS!H4Zd7&y>(Xa`A%6nqDJfdp^$hSu;ENq? z@|(ba0bax8GkjL0+fLxOD}FDB@}~*|b5$ThhG*6&b#)$GD3&7-mXZ@8F&=MX0^5HH zd>sJe>M?8q*@J3uGR5o!eLjC;UOSns?fO07dmU}E75F3I4Z!-dJbk)_HKO5v<^_fq zf0NL*M!sBJT2K`XLJ;O4@G$7Zz?T7Vb_pcg5OxFmLH8iC9i@c@6trq>*PjFL?`V@x zFw#6+F~hfc2>2&LFlrtVU?OOF>_JA1oL50qFxC*4Qeh@%fFGqBWUYX%M9oe@H*_z; zUf?2h{`(WH?b-u;3HVY+o4k_HJX{CVPxF#b0N*57(I2+9rxm#V?1%H5029HaD?_V# zqVfv0kw79C3|cdqB%UtJO?AqjxT?!Y_djrp?3kz#D<92&1dPJ1OFA+0Q^1hh1Pa`WGdJD|8Daj_l0o7I{*Lx07*qoM6N<$g8CxY AWB>pF literal 0 HcmV?d00001 From 15705f0dca2b41939549259493b47d7baf5aed2a Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 20:23:00 -0300 Subject: [PATCH 12/22] Added Reload feature Double click in tabs to see Reload option. --- app/ux/WebView.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/ux/WebView.js b/app/ux/WebView.js index 13d39897..7b0ec7be 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -44,6 +44,15 @@ Ext.define('Rambox.ux.WebView',{ listeners: { badgetextchange: me.onBadgeTextChange } + ,clickEvent: 'dblclick' + ,menu: [ + { + text: 'Reload' + ,glyph: 'xf021@FontAwesome' + ,scope: me + ,handler: me.reloadService + } + ] } ,listeners: { afterrender: me.onAfterRender @@ -139,4 +148,11 @@ Ext.define('Rambox.ux.WebView',{ } }); } + + ,reloadService: function(btn) { + var me = this; + var webview = me.down('component').el.dom; + + webview.reload(); + } }); From d7371731e74cd8bcfdfc359df6343b29be153dd3 Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 21:24:03 -0300 Subject: [PATCH 13/22] Improved About window Fixes #33 --- app.js | 4 ++++ app/view/main/About.js | 28 ++++++++++++++++++++++++++++ electron/menu.js | 10 +++++++--- 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 app/view/main/About.js diff --git a/app.js b/app.js index 3675f3c2..60a29827 100644 --- a/app.js +++ b/app.js @@ -35,3 +35,7 @@ function sync() { services: services }); } + +require('electron').ipcRenderer.on('showAbout', (event, message) => { + !Ext.cq1('about') ? Ext.create('Rambox.view.main.About') : ''; +}); diff --git a/app/view/main/About.js b/app/view/main/About.js new file mode 100644 index 00000000..941d628e --- /dev/null +++ b/app/view/main/About.js @@ -0,0 +1,28 @@ +Ext.define('Rambox.view.main.About', { + extend: 'Ext.window.Window' + ,xtype: 'about' + ,title: 'About Rambox' + ,autoShow: true + ,modal: true + ,width: 300 + ,bodyPadding: 10 + ,data: { + version: require('electron').remote.app.getVersion() + ,platform: process.platform + ,arch: process.arch + ,electron: process.versions.electron + ,chromium: process.versions.chrome + ,node: process.versions.node + } + ,tpl: [ + '
    ' + ,'

    Free and Open Source messaging and emailing app that combines common web applications into one.

    ' + ,'
    Version: {version}
    ' + ,'
    Platform: {platform} ({arch})
    ' + ,'
    Electron: {electron}
    ' + ,'
    Chromium: {chromium}
    ' + ,'
    Node: {node}
    ' + ,'
    ' + ,'
    ' + ] +}); diff --git a/electron/menu.js b/electron/menu.js index 41b61af6..3362e7f9 100644 --- a/electron/menu.js +++ b/electron/menu.js @@ -122,7 +122,7 @@ let tpl = [ label: 'Close', accelerator: 'CmdOrCtrl+W', role: 'close' - }, + } ] }, { @@ -137,7 +137,9 @@ if (process.platform === 'darwin') { submenu: [ { label: `About ${appName}`, - role: 'about' + click() { + sendAction('showAbout') + } }, { type: 'separator' @@ -194,7 +196,9 @@ if (process.platform === 'darwin') { }); helpSubmenu.push({ label: `About ${appName}`, - role: 'about' + click() { + sendAction('showAbout') + } }); } From d143e46d43d2a8aa098826664267514671ed6952 Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 21:53:49 -0300 Subject: [PATCH 14/22] Fixed code format On Sencha build, gave errors. Related #33 --- app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.js b/app.js index 60a29827..0eb80cb7 100644 --- a/app.js +++ b/app.js @@ -36,6 +36,6 @@ function sync() { }); } -require('electron').ipcRenderer.on('showAbout', (event, message) => { +require('electron').ipcRenderer.on('showAbout', function(event, message) { !Ext.cq1('about') ? Ext.create('Rambox.view.main.About') : ''; }); From 476b5a10395078129c81187e3d5e199de5fd3221 Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 22:31:41 -0300 Subject: [PATCH 15/22] Improved speed of the app Fixes #23 . Seems like Electron is caching services (webview) by default. --- app.json | 10 ++++++++-- app/Application.js | 3 +++ app/store/Services.js | 1 - app/ux/WebView.js | 3 --- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app.json b/app.json index d5c1c783..6daaaa85 100644 --- a/app.json +++ b/app.json @@ -248,7 +248,10 @@ * */ "output": { - "base": "${workspace.build.dir}/${build.environment}/${app.name}" + "base": "${workspace.build.dir}/${build.environment}/${app.name}", + "appCache": { + "enable": true + } }, /** @@ -259,7 +262,10 @@ * List of items in the CACHE MANIFEST section */ "cache": [ - "index.html" + "index.html", + "app.js", + "resources/Rambox-all.css", + "resources/Icon.png" ], /** * List of items in the NETWORK section diff --git a/app/Application.js b/app/Application.js index bd670c5c..9ba8e597 100644 --- a/app/Application.js +++ b/app/Application.js @@ -26,6 +26,9 @@ Ext.define('Rambox.Application', { Ext.cq1('app-main').setActiveTab(key - 48); } }); + + // Remove spinner after 3 secs + Ext.defer(function() { Ext.get('spinner').destroy(); }, 3000); } ,updateTotalNotifications: function( newValue, oldValue ) { diff --git a/app/store/Services.js b/app/store/Services.js index b7de20d8..4db0a0bb 100644 --- a/app/store/Services.js +++ b/app/store/Services.js @@ -21,7 +21,6 @@ Ext.define('Rambox.store.Services', { ,listeners: { load: function( store, records, successful ) { if ( Ext.isEmpty(records) ) { - Ext.get('spinner').destroy(); Ext.cq1('app-main').add({ tabConfig : { xtype : 'tbfill' } }); return; } diff --git a/app/ux/WebView.js b/app/ux/WebView.js index 7b0ec7be..04a2ea02 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -83,9 +83,6 @@ Ext.define('Rambox.ux.WebView',{ webview.addEventListener("did-finish-load", function(e) { Rambox.app.setTotalServicesLoaded( Rambox.app.getTotalServicesLoaded() + 1 ); - if ( Rambox.app.getTotalServicesLoaded() === Ext.getStore('Services').getCount() && Ext.get('spinner') !== null ) { - Ext.get('spinner').destroy(); - } }); // Open links in default browser From 1c1e1b81d57875bf3760b90ace8a66901ae28c9d Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 22:32:44 -0300 Subject: [PATCH 16/22] Removed notification when is a new version --- electron/autoupdater.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/electron/autoupdater.js b/electron/autoupdater.js index 8891f8fe..66bb5100 100644 --- a/electron/autoupdater.js +++ b/electron/autoupdater.js @@ -13,7 +13,7 @@ const feedUrl = `https://getrambox.herokuapp.com/update/${process.platform}/${ap exports.check = win => { if ( isDev ) return; - + /* autoUpdater.on('update-available', function() { dialog.showMessageBox({ message: 'New version' @@ -21,7 +21,7 @@ exports.check = win => { ,buttons: ['Ok'] }); }); - + */ autoUpdater.on('update-downloaded', function(e, releaseNotes, releaseName, releaseDate, updateURL) { var index = dialog.showMessageBox({ message: 'A new update is ready to install' From ad9dd5aa98b0a728780a8da24399346a6e303a37 Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 22:44:52 -0300 Subject: [PATCH 17/22] Save Window State Fixes #24 --- app/package.json | 1 + electron/main.js | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/package.json b/app/package.json index 4d631c05..8a60ab85 100644 --- a/app/package.json +++ b/app/package.json @@ -25,6 +25,7 @@ "author": "Ramiro Saenz", "license": "MIT", "dependencies": { + "electron-window-state": "^3.0.3", "firebase": "^3.0.5", "firebase-token-generator": "^2.0.0" } diff --git a/electron/main.js b/electron/main.js index 842218f1..9f82a35c 100644 --- a/electron/main.js +++ b/electron/main.js @@ -13,6 +13,8 @@ const appMenu = require('./menu'); const tray = require('./tray'); // Require for autpUpdate file const autoupdater = require('./autoupdater'); +// Window State Plugin +const windowStateKeeper = require('electron-window-state'); const MenuItem = electron.MenuItem; @@ -91,11 +93,21 @@ let mainWindow; let isQuitting = false; function createWindow () { - // Create the browser window. + // Load the previous state with fallback to defaults + let mainWindowState = windowStateKeeper({ + defaultWidth: 1000 + ,defaultHeight: 800 + ,maximize: true + }); + // Create the browser window using the state information mainWindow = new BrowserWindow({ title: 'Rambox' ,skipTaskbar: false ,icon: __dirname + '/../resources/Icon.png' + ,x: mainWindowState.x + ,y: mainWindowState.y + ,width: mainWindowState.width + ,height: mainWindowState.height ,webPreferences: { webSecurity: false ,nodeIntegration: true @@ -104,10 +116,12 @@ function createWindow () { } }); - process.setMaxListeners(100); + // Let us register listeners on the window, so we can update the state + // automatically (the listeners will be removed when the window is closed) + // and restore the maximized or full screen state + mainWindowState.manage(mainWindow); - // Start maximize - mainWindow.maximize(); + process.setMaxListeners(100); // and load the index.html of the app. mainWindow.loadURL('file://' + __dirname + '/../index.html'); From 40d7af8aaea66529c153f21a4862cc3f575d757c Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 22:45:32 -0300 Subject: [PATCH 18/22] Removed dependencies from this package.json They are moved and used in app/package.json --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 50214eef..26526890 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,6 @@ } }, "dependencies": { - "firebase": "^3.0.5", - "firebase-token-generator": "^2.0.0" + } } From 39d3248e502a3372089d2f689322220f4fa0271c Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 4 Jul 2016 23:02:50 -0300 Subject: [PATCH 19/22] Added FreeNode service. Fixes #9 --- app/store/ServicesList.js | 7 +++++++ resources/icons/freenode.png | Bin 0 -> 57597 bytes 2 files changed, 7 insertions(+) create mode 100644 resources/icons/freenode.png diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index d8b6c785..7e64c14a 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -298,6 +298,13 @@ Ext.define('Rambox.store.ServicesList', { ,name: 'Zinc' ,url: 'https://zinc-app.com/' ,type: 'messaging' + }, + { + id: 'freenode' + ,logo: 'freenode.png' + ,name: 'FreeNode' + ,url: 'https://webchat.freenode.net/' + ,type: 'messaging' } ] }); diff --git a/resources/icons/freenode.png b/resources/icons/freenode.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac9d6e9ce5318e862a033e43f3d2e55b362872b GIT binary patch literal 57597 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 B7#aWo literal 0 HcmV?d00001 From 95dd201cd1d784ba3c2c8c2a6aefa46457ab323c Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Tue, 5 Jul 2016 02:36:25 -0300 Subject: [PATCH 20/22] Added video and audio support for Skype Fixes #41 --- app/ux/WebView.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/ux/WebView.js b/app/ux/WebView.js index 04a2ea02..9284c69f 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -38,6 +38,7 @@ Ext.define('Rambox.ux.WebView',{ ,plugins: 'true' ,allowtransparency: 'on' ,autosize: 'on' + ,useragent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586' // Used to enable video and audio calls in Skype } }] ,tabConfig: { From b5c6d91d920f9769b6eeeaef0f0ac1e736aba551 Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Tue, 5 Jul 2016 03:48:08 -0300 Subject: [PATCH 21/22] Improved Loading mask Removed modal and moved mask to bottom-left. Fixes #50 and #20 --- app/ux/WebView.js | 4 +++- .../rambox-default-theme/sass/src/LoadMask.scss | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 packages/local/rambox-default-theme/sass/src/LoadMask.scss diff --git a/app/ux/WebView.js b/app/ux/WebView.js index 9284c69f..9e322a57 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -76,7 +76,9 @@ Ext.define('Rambox.ux.WebView',{ // Show and hide spinner when is loading webview.addEventListener("did-start-loading", function() { console.info('Start loading...', me.src); - me.mask('Loading...'); + me.mask('Loading...', 'bottomMask'); + // Manually remove modal from mask + Ext.cq1('#'+me.id).el.dom.getElementsByClassName('bottomMask')[0].parentElement.className = ''; }); webview.addEventListener("did-stop-loading", function() { me.unmask(); diff --git a/packages/local/rambox-default-theme/sass/src/LoadMask.scss b/packages/local/rambox-default-theme/sass/src/LoadMask.scss new file mode 100644 index 00000000..b841ac77 --- /dev/null +++ b/packages/local/rambox-default-theme/sass/src/LoadMask.scss @@ -0,0 +1,14 @@ +.bottomMask { + bottom: 0; + height: 32px; + position: fixed; + top: auto !important; + left: 0 !important; + width: 120px; + .x-mask-msg-text { + padding: 0 0 0 24px; + background-image: url(images/loadmask/loading.gif); + background-repeat: no-repeat; + background-position: 0 0; + } +} From ffef377e2dc22c715773e7a500334ca33c0426d4 Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Tue, 5 Jul 2016 03:50:03 -0300 Subject: [PATCH 22/22] Improve speeds in Services Related #23. --- app/ux/WebView.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/ux/WebView.js b/app/ux/WebView.js index 9e322a57..aee7219c 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -38,6 +38,7 @@ Ext.define('Rambox.ux.WebView',{ ,plugins: 'true' ,allowtransparency: 'on' ,autosize: 'on' + ,blinkfeatures: 'ApplicationCache,GlobalCacheStorage' ,useragent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586' // Used to enable video and audio calls in Skype } }]