From 0ebe21ec2c53acc7db8a15a0eda5faaa7dcf7539 Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Thu, 19 Jan 2017 14:17:39 -0300 Subject: [PATCH] Fixed zoom level Some OS don't save the zoom level in cookies/sessions. So now we save it in localStorage. Fixes #484 --- app/model/Service.js | 4 ++++ app/ux/Auth0.js | 1 + app/ux/WebView.js | 32 +++++++++++++++++++++++--------- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/app/model/Service.js b/app/model/Service.js index a6711f48..5f14eb83 100644 --- a/app/model/Service.js +++ b/app/model/Service.js @@ -57,5 +57,9 @@ Ext.define('Rambox.model.Service', { name: 'js_unread' ,type: 'string' ,defaultValue: '' + },{ + name: 'zoomLevel' + ,type: 'number' + ,defaultValue: 0 }] }); diff --git a/app/ux/Auth0.js b/app/ux/Auth0.js index 0d513719..982b0555 100644 --- a/app/ux/Auth0.js +++ b/app/ux/Auth0.js @@ -79,6 +79,7 @@ Ext.define('Rambox.ux.Auth0', { var services = []; Ext.getStore('Services').each(function(service) { delete service.data.id; + delete service.data.zoomLevel; services.push(service.data); }); diff --git a/app/ux/WebView.js b/app/ux/WebView.js index b23d143c..4b9bc53c 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -9,14 +9,14 @@ Ext.define('Rambox.ux.WebView',{ 'Rambox.util.Format', 'Rambox.util.Notifier', 'Rambox.util.UnreadCounter' - ], + ] // private - zoomLevel: 0, - currentUnreadCount: 0, + ,zoomLevel: 0 + ,currentUnreadCount: 0 // CONFIG - hideMode: 'offsets' + ,hideMode: 'offsets' ,initComponent: function(config) { var me = this; @@ -160,8 +160,8 @@ Ext.define('Rambox.ux.WebView',{ ,autosize: 'on' ,disablewebsecurity: 'on' ,blinkfeatures: 'ApplicationCache,GlobalCacheStorage' - ,useragent: Ext.getStore('ServicesList').getById(me.record.get('type')).get('userAgent'), - preload: './resources/js/rambox-service-api.js' + ,useragent: Ext.getStore('ServicesList').getById(me.record.get('type')).get('userAgent') + ,preload: './resources/js/rambox-service-api.js' } }; @@ -197,6 +197,9 @@ Ext.define('Rambox.ux.WebView',{ webview.addEventListener("did-finish-load", function(e) { Rambox.app.setTotalServicesLoaded( Rambox.app.getTotalServicesLoaded() + 1 ); + + // Apply saved zoom level + webview.setZoomLevel(me.record.get('zoomLevel')); }); // Open links in default browser @@ -260,6 +263,8 @@ Ext.define('Rambox.ux.WebView',{ */ console.groupEnd(); + + // Scroll always to top (bug) webview.executeJavaScript('document.body.scrollTop=0;'); }); @@ -468,7 +473,10 @@ Ext.define('Rambox.ux.WebView',{ var webview = me.down('component').el.dom; me.zoomLevel = me.zoomLevel + 0.25; - if ( me.record.get('enabled') ) webview.setZoomLevel(me.zoomLevel); + if ( me.record.get('enabled') ) { + webview.setZoomLevel(me.zoomLevel); + me.record.set('zoomLevel', me.zoomLevel); + } } ,zoomOut: function() { @@ -476,7 +484,10 @@ Ext.define('Rambox.ux.WebView',{ var webview = me.down('component').el.dom; me.zoomLevel = me.zoomLevel - 0.25; - if ( me.record.get('enabled') ) webview.setZoomLevel(me.zoomLevel); + if ( me.record.get('enabled') ) { + webview.setZoomLevel(me.zoomLevel); + me.record.set('zoomLevel', me.zoomLevel); + } } ,resetZoom: function() { @@ -484,6 +495,9 @@ Ext.define('Rambox.ux.WebView',{ var webview = me.down('component').el.dom; me.zoomLevel = 0; - if ( me.record.get('enabled') ) webview.setZoomLevel(0); + if ( me.record.get('enabled') ) { + webview.setZoomLevel(0); + me.record.set('zoomLevel', me.zoomLevel); + } } });