WebApp NightMode and FooterBar are now server side state.

Ylian Saint-Hilaire committed Feb 27, 2020 at 16:34 UTC b85e7495a758f43158da5b7574363546596992f4
2 files changed +12 -8
views/default.handlebars
+11 -7
@@ -1181,8 +1181,8 @@
1181 var uiMode = parseInt(getstore('uiMode', 1));
1182 var webPageStackMenu = false;
1183 var webPageFullScreen = true;
1184 - var nightMode = (getstore('_nightMode', '0') == '1');
1185 - var footerBar = (getstore('_footerBar', '1') == '1');
1184 + var nightMode = (getstore('nightMode', '0') == '1');
1185 + var footerBar = (getstore('footerBar', '1') == '1');
1186 var sessionActivity = Date.now();
1187 var updateSessionTimer = null;
1188 var pluginHandlerBuilder = {{{pluginHandler}}};
@@ -1489,12 +1489,12 @@
1489 function toggleNightMode() {
1490 nightMode = !nightMode;
1491 if (nightMode) { QC('body').add('night'); QS('body')['background-color'] = '#000'; } else { QC('body').remove('night'); QS('body')['background-color'] = '#d3d9d6'; }
1492 - putstore('_nightMode', nightMode?'1':'0');
1492 + putstore('nightMode', nightMode?'1':'0');
1493 }
1494
1495 function toggleFooterBarMode() {
1496 footerBar = !footerBar;
1497 - putstore('_footerBar', footerBar?'1':'0');
1497 + putstore('footerBar', footerBar?'1':'0');
1498 QS('container')['grid-template-rows'] = null;
1499 QS('container')['-ms-grid-rows'] = null;
1500 adjustPanels();
@@ -2232,6 +2232,8 @@
2232 var oldUiMode = localStorage.getItem('uiMode');
2233 var oldSort = localStorage.getItem('sort');
2234 var oldLoctag = localStorage.getItem('loctag');
2235 + var oldNightMode = localStorage.getItem('nightMode');
2236 + var oldFooterBar = localStorage.getItem('footerBar');
2237
2238 var webstate = JSON.parse(message.event.state);
2239 for (var i in webstate) { localStorage.setItem(i, webstate[i]); }
@@ -2242,6 +2244,8 @@
2244 if ((webstate.uiMode != null) && (webstate.uiMode != oldUiMode)) { userInterfaceSelectMenu(parseInt(webstate.uiMode)); }
2245 if ((webstate.sort != null) && (webstate.sort != oldSort)) { document.getElementById('sortselect').selectedIndex = sort = parseInt(webstate.sort); masterUpdate(6); }
2246 if ((webstate.loctag != null) && (webstate.loctag != oldLoctag)) { if (webstate.loctag != null) { args.locale = webstate.loctag; } else { delete args.locale; } masterUpdate(0xFFFFFFFF); }
2247 + if ((webstate.nightMode != null) && (webstate.nightMode != oldNightMode)) { nightMode = (webstate.nightMode == '1'); if (nightMode) { QC('body').add('night'); QS('body')['background-color'] = '#000'; } else { QC('body').remove('night'); QS('body')['background-color'] = '#d3d9d6'; } }
2248 + if ((webstate.footerBar != null) && (webstate.footerBar != oldFooterBar)) { footerBar = (webstate.footerBar == '1'); QS('container')['grid-template-rows'] = null; QS('container')['-ms-grid-rows'] = null; adjustPanels(); }
2249 }
2250 } catch (ex) {}
2251 break;
@@ -11050,11 +11054,11 @@
11054 };
11055 TextEncoder.prototype.toString = function(){return '[object TextEncoder]'};
11056 try {
11053 - Object.defineProperty(TextEncoder.prototype,"encoding",{
11054 - get:function(){ if(TextEncoder.prototype.isPrototypeOf(this)) return'utf-8'; else throw TypeError("Illegal invocation"); }
11057 + Object.defineProperty(TextEncoder.prototype,'encoding',{
11058 + get:function(){ if(TextEncoder.prototype.isPrototypeOf(this)) return'utf-8'; else throw TypeError('Illegal invocation'); }
11059 });
11060 } catch(e) { TextEncoder.prototype.encoding = 'utf-8'; }
11057 - if (typeof Symbol!=="undefined")TextEncoder.prototype[Symbol.toStringTag]='TextEncoder';
11061 + if (typeof Symbol!=='undefined')TextEncoder.prototype[Symbol.toStringTag]='TextEncoder';
11062 }
11063
11064 function joinPaths() { var x = []; for (var i in arguments) { var w = arguments[i]; if ((w != null) && (w != '')) { while (w.endsWith('/') || w.endsWith('\\')) { w = w.substring(0, w.length - 1); } while (w.startsWith('/') || w.startsWith('\\')) { w = w.substring(1); } x.push(w); } } return x.join('/'); }
webserver.js
+1 -1
@@ -4230,7 +4230,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
4230 }
4231
4232 // Filter the user web site and only output state that we need to keep
4233 - const acceptableUserWebStateStrings = ['webPageStackMenu', 'notifications', 'deviceView', 'nightMode', 'webPageFullScreen', 'search', 'showRealNames', 'sort', 'deskAspectRatio', 'viewsize', 'DeskControl', 'uiMode'];
4233 + const acceptableUserWebStateStrings = ['webPageStackMenu', 'notifications', 'deviceView', 'nightMode', 'webPageFullScreen', 'search', 'showRealNames', 'sort', 'deskAspectRatio', 'viewsize', 'DeskControl', 'uiMode', 'footerBar'];
4234 const acceptableUserWebStateDesktopStrings = ['encoding', 'showfocus', 'showmouse', 'showcad', 'limitFrameRate', 'noMouseRotate', 'quality', 'scaling']
4235 obj.filterUserWebState = function (state) {
4236 if (typeof state == 'string') { try { state = JSON.parse(state); } catch (ex) { return null; } }