diff --git a/app/store/Services.js b/app/store/Services.js index 506f9a4b..420a2012 100644 --- a/app/store/Services.js +++ b/app/store/Services.js @@ -41,6 +41,7 @@ Ext.define('Rambox.store.Services', { ,displayTabUnreadCounter: service.get('displayTabUnreadCounter') ,enabled: service.get('enabled') ,record: service + ,useragent: ipc.sendSync('getConfig').user_agent ,tabConfig: { service: service } diff --git a/app/ux/WebView.js b/app/ux/WebView.js index 51af59cf..c3ce8e1c 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -176,7 +176,7 @@ Ext.define('Rambox.ux.WebView',{ ,autosize: 'on' ,webpreferences: 'allowRunningInsecureContent=yes' //,nativeWindowOpen=yes //,disablewebsecurity: 'on' // Disabled because some services (Like Google Drive) dont work with this enabled - ,useragent: Ext.getStore('ServicesList').getById(me.record.get('type')).get('userAgent') + ,useragent: ipc.sendSync('getConfig').user_agent ? ipc.sendSync('getConfig').user_agent : Ext.getStore('ServicesList').getById(me.record.get('type')).get('userAgent') ,preload: './resources/js/rambox-service-api.js' } }]; @@ -298,7 +298,7 @@ Ext.define('Rambox.ux.WebView',{ ,src: e.url ,style: 'width:100%;height:100%;' ,partition: me.getWebView().partition - ,useragent: Ext.getStore('ServicesList').getById(me.record.get('type')).get('userAgent') + ,useragent: ipc.sendSync('getConfig').user_agent ? ipc.sendSync('getConfig').user_agent : Ext.getStore('ServicesList').getById(me.record.get('type')).get('userAgent') } } }).show(); @@ -326,7 +326,7 @@ Ext.define('Rambox.ux.WebView',{ ,src: e.url ,style: 'width:100%;height:100%;' ,partition: me.getWebView().partition - ,useragent: Ext.getStore('ServicesList').getById(me.record.get('type')).get('userAgent') + ,useragent: ipc.sendSync('getConfig').user_agent ? ipc.sendSync('getConfig').user_agent : Ext.getStore('ServicesList').getById(me.record.get('type')).get('userAgent') } } }).show(); @@ -356,7 +356,7 @@ Ext.define('Rambox.ux.WebView',{ ,src: e.url ,style: 'width:100%;height:100%;' ,partition: me.getWebView().partition - ,useragent: Ext.getStore('ServicesList').getById(me.record.get('type')).get('userAgent') + ,useragent: ipc.sendSync('getConfig').user_agent ? ipc.sendSync('getConfig').user_agent : Ext.getStore('ServicesList').getById(me.record.get('type')).get('userAgent') ,preload: './resources/js/rambox-modal-api.js' } } diff --git a/app/view/main/MainController.js b/app/view/main/MainController.js index 916d1489..45455d5f 100644 --- a/app/view/main/MainController.js +++ b/app/view/main/MainController.js @@ -95,6 +95,7 @@ Ext.define('Rambox.view.main.MainController', { ,displayTabUnreadCounter: rec.get('displayTabUnreadCounter') ,enabled: rec.get('enabled') ,record: rec + ,useragent: ipc.sendSync('getConfig').user_agent ,hidden: hideTab ,tabConfig: { service: rec diff --git a/app/view/preferences/Preferences.js b/app/view/preferences/Preferences.js index 436ebe77..b81dc03d 100644 --- a/app/view/preferences/Preferences.js +++ b/app/view/preferences/Preferences.js @@ -235,6 +235,15 @@ Ext.define('Rambox.view.preferences.Preferences',{ ,boxLabel: locale['preferences[8]'] ,value: config.enable_hidpi_support ,hidden: process.platform !== 'win32' + }, + { + xtype: 'textfield' + ,fieldLabel: 'Override User-Agent for all services (needs to relaunch)' + ,labelAlign: 'top' + ,name: 'user_agent' + ,value: config.user_agent + ,width: 360 + ,emptyText: 'Leave blank for default user agent' } ,{ xtype: 'fieldset' diff --git a/app/view/preferences/PreferencesController.js b/app/view/preferences/PreferencesController.js index d72d9bc9..2cbe3853 100644 --- a/app/view/preferences/PreferencesController.js +++ b/app/view/preferences/PreferencesController.js @@ -45,6 +45,13 @@ Ext.define('Rambox.view.preferences.PreferencesController', { return; } + // User Agent + if ( values.user_agent !== ipc.sendSync('getConfig').user_agent ) { + Ext.Msg.confirm('Action required', 'To change the user agent of Rambox, you need to reload the app. Do you want to do it now?', function(btnId) { + if ( btnId === 'yes' ) ipc.send('relaunchApp'); + }); + } + // Locale if ( values.locale !== ipc.sendSync('getConfig').locale ) { localStorage.setItem('locale', values.locale); diff --git a/electron/main.js b/electron/main.js index d1d1620c..8e0103b4 100644 --- a/electron/main.js +++ b/electron/main.js @@ -36,6 +36,7 @@ const config = new Config({ ,proxyPassword: '' ,locale: 'en' ,enable_hidpi_support: false + ,user_agent: '' ,default_service: 'ramboxTab' ,x: undefined @@ -163,6 +164,9 @@ function createWindow () { } }); + // Check if user has defined a custom User-Agent + if ( config.get('user_agent').length > 0 ) mainWindow.webContents.setUserAgent( config.get('user_agent') ); + if ( !config.get('start_minimized') && config.get('maximized') ) mainWindow.maximize(); if ( config.get('window_display_behavior') !== 'show_trayIcon' && config.get('start_minimized') ) mainWindow.minimize(); @@ -196,6 +200,7 @@ function createWindow () { case 'new-window': e.preventDefault(); const win = new BrowserWindow(options); + if ( config.get('user_agent').length > 0 ) win.webContents.setUserAgent( config.get('user_agent') ); win.once('ready-to-show', () => win.show()); win.loadURL(url); e.newGuest = win; @@ -406,6 +411,8 @@ ipcMain.on('image:download', function(event, url, partition) { } }); + if ( config.get('user_agent').length > 0 ) tmpWindow.webContents.setUserAgent( config.get('user_agent') ); + tmpWindow.webContents.session.once('will-download', (event, downloadItem) => { imageCache[url] = file = { path: tmp.tmpNameSync() + '.' + mime.extension(downloadItem.getMimeType()) @@ -439,6 +446,8 @@ ipcMain.on('image:popup', function(event, url, partition) { } }); + if ( config.get('user_agent').length > 0 ) tmpWindow.webContents.setUserAgent( config.get('user_agent') ); + tmpWindow.maximize(); tmpWindow.loadURL(url);