diff --git a/app/store/Services.js b/app/store/Services.js index 134efc34..506f9a4b 100644 --- a/app/store/Services.js +++ b/app/store/Services.js @@ -26,19 +26,6 @@ Ext.define('Rambox.store.Services', { var servicesLeft = []; var servicesRight = []; store.each(function(service) { - // Fix some services with bad IDs - // TODO: Remove in next release - switch ( service.get('type') ) { - case 'office365': - service.set('type', 'outlook365'); - break; - case ' irccloud': - service.set('type', 'irccloud'); - break; - default: - break; - } - // If the service is disabled, we dont add it to tab bar if ( !service.get('enabled') ) return; @@ -65,6 +52,19 @@ Ext.define('Rambox.store.Services', { if ( !Ext.isEmpty(servicesLeft) ) Ext.cq1('app-main').insert(1, servicesLeft); if ( !Ext.isEmpty(servicesRight) ) Ext.cq1('app-main').add(servicesRight); + // Set default active service + const config = ipc.sendSync('getConfig'); + switch ( config.default_service ) { + case 'last': + Ext.cq1('app-main').setActiveTab(localStorage.getItem('last_active_service')); + break; + case 'ramboxTab': + break; + default: + if ( Ext.getCmp('tab_'+config.default_service) ) Ext.cq1('app-main').setActiveTab('tab_'+config.default_service); + break; + } + store.suspendEvent('load'); Ext.cq1('app-main').resumeEvent('add'); } diff --git a/app/view/main/MainController.js b/app/view/main/MainController.js index 8404ad03..24f65487 100644 --- a/app/view/main/MainController.js +++ b/app/view/main/MainController.js @@ -10,6 +10,8 @@ Ext.define('Rambox.view.main.MainController', { // Set Google Analytics event ga_storage._trackPageview('/index.html', 'main'); + localStorage.setItem('last_active_service', newTab.id); + if ( newTab.id === 'ramboxTab' ) { if ( Rambox.app.getTotalNotifications() > 0 ) { document.title = 'Rambox ('+ Rambox.app.getTotalNotifications() +')'; @@ -129,6 +131,9 @@ Ext.define('Rambox.view.main.MainController', { clearData(webview, tab); } + const config = ipc.sendSync('getConfig'); + if ( config.default_service === rec.get('id') ) ipc.send('setConfig', Ext.apply(config, { default_service: 'ramboxTab' })); + function clearData(webview, tab) { webview.getWebContents().clearHistory(); webview.getWebContents().session.flushStorageData(); diff --git a/app/view/preferences/Preferences.js b/app/view/preferences/Preferences.js index 4e9541c8..3eb40737 100644 --- a/app/view/preferences/Preferences.js +++ b/app/view/preferences/Preferences.js @@ -38,6 +38,16 @@ Ext.define('Rambox.view.preferences.Preferences',{ ,initComponent: function() { var config = ipc.sendSync('getConfig'); + var defaultServiceOptions = []; + defaultServiceOptions.push({ value: 'ramboxTab', label: 'Rambox Tab' }); + defaultServiceOptions.push({ value: 'last', label: 'Last Active Service' }); + Ext.getStore('Services').each(function(rec) { + defaultServiceOptions.push({ + value: rec.get('id') + ,label: rec.get('name') + }); + }); + this.items = [ { xtype: 'form' @@ -114,6 +124,22 @@ Ext.define('Rambox.view.preferences.Preferences',{ ,value: config.hide_menu_bar ,hidden: process.platform !== 'win32' } + ,{ + xtype: 'combo' + ,name: 'default_service' + ,fieldLabel: 'Default service to display when Rambox starts' + ,labelAlign: 'top' + //,width: 380 + //,labelWidth: 105 + ,value: config.default_service + ,displayField: 'label' + ,valueField: 'value' + ,editable: false + ,store: Ext.create('Ext.data.Store', { + fields: ['value', 'label'] + ,data: defaultServiceOptions + }) + } ,{ xtype: 'combo' ,name: 'window_display_behavior' diff --git a/electron/main.js b/electron/main.js index 270adf4d..5a12b003 100644 --- a/electron/main.js +++ b/electron/main.js @@ -34,6 +34,7 @@ const config = new Config({ ,proxyPort: '' ,locale: 'en' ,enable_hidpi_support: false + ,default_service: 'ramboxTab' ,x: undefined ,y: undefined