diff options
author | fox <[email protected]> | 2020-07-09 18:02:02 +0000 |
---|---|---|
committer | Gogs <[email protected]> | 2020-07-09 18:02:02 +0000 |
commit | 3b033a17f4798db7aefcd87b97a7c1ae60be2815 (patch) | |
tree | 7c6af603d888edd72e34a53f7e6229496995fc5a | |
parent | 68b78ecd3d90fb6cb35d08a96ed74b7a59470c39 (diff) | |
parent | 8d8affdc453f8cfa5f1b60d2ba90f716202c9b5e (diff) |
Merge branch 'feed-tree-localstorage' of nanaya/tt-rss into master
-rwxr-xr-x | js/FeedTree.js | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/js/FeedTree.js b/js/FeedTree.js index 75a3f32a7..74c29d2f7 100755 --- a/js/FeedTree.js +++ b/js/FeedTree.js @@ -1,9 +1,42 @@ /* eslint-disable prefer-rest-params */ /* global __, dojo, dijit, define, App, Feeds, CommonDialogs */ -define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"], function (declare, domConstruct) { +define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/cookie", "dijit/Tree", "dijit/Menu"], function (declare, domConstruct, array, cookie) { return declare("fox.FeedTree", dijit.Tree, { + // save state in localStorage instead of cookies + // reference: https://stackoverflow.com/a/27968996 + _saveExpandedNodes: function(){ + if(this.persist && this.cookieName){ + var ary = []; + for(var id in this._openedNodes){ + ary.push(id); + } + // Was: + // cookie(this.cookieName, ary.join(","), {expires: 365}); + localStorage.setItem(this.cookieName, ary.join(",")); + } + }, + _initState: function(){ + // summary: + // Load in which nodes should be opened automatically + this._openedNodes = {}; + if(this.persist && this.cookieName){ + // Was: + // var oreo = cookie(this.cookieName); + var oreo = localStorage.getItem(this.cookieName); + // migrate old data if nothing in localStorage + if(oreo == null || oreo === '') { + oreo = cookie(this.cookieName); + cookie(this.cookieName, null, { expires: -1 }); + } + if(oreo){ + array.forEach(oreo.split(','), function(item){ + this._openedNodes[item] = true; + }, this); + } + } + }, _onContainerKeydown: function(/* Event */ /* e */) { return; // Stop dijit.Tree from interpreting keystrokes }, |