From 1d9fa2a42e2cad9ea76ad22edf8919942c853be1 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 6 Mar 2021 22:41:46 +0300 Subject: [PATCH] reduce overhead in hash set/get --- js/App.js | 11 ++++++++++- js/Feeds.js | 19 +++++++++++-------- js/tt-rss.js | 12 ------------ 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/js/App.js b/js/App.js index f792cf2e1..82ec26c2f 100644 --- a/js/App.js +++ b/js/App.js @@ -18,6 +18,15 @@ const App = { is_prefs: false, LABEL_BASE_INDEX: -1024, _translations: {}, + Hash: { + get: function() { + return dojo.queryToObject(window.location.hash.substring(1)); + }, + set: function(params) { + const obj = dojo.queryToObject(window.location.hash.substring(1)); + window.location.hash = dojo.objectToQuery({...obj, ...params}); + } + }, l10n: { ngettext: function(msg1, msg2, n) { return self.__((parseInt(n) > 1) ? msg2 : msg1); @@ -1269,6 +1278,6 @@ const App = { default: console.log("quickMenuGo: unknown action: " + opid); } - } + }, } diff --git a/js/Feeds.js b/js/Feeds.js index 5a2dee5cf..ad2edf8d5 100644 --- a/js/Feeds.js +++ b/js/Feeds.js @@ -236,12 +236,12 @@ const Feeds = { //document.onkeypress = (event) => { return App.hotkeyHandler(event) }; window.onresize = () => { Headlines.scrollHandler(); } - /* global hash_get */ - const hash_feed_id = hash_get('f'); - const hash_feed_is_cat = hash_get('c') == "1"; + const hash = App.Hash.get(); - if (hash_feed_id != undefined) { - this.open({feed: hash_feed_id, is_cat: hash_feed_is_cat}); + console.log('got hash', hash); + + if (hash.f != undefined) { + this.open({feed: parseInt(hash.f), is_cat: parseInt(hash.c)}); } else { this.openDefaultFeed(); } @@ -305,9 +305,12 @@ const Feeds = { setActive: function(id, is_cat) { console.log('setActive', id, is_cat); - /* global hash_set */ - hash_set('f', id); - hash_set('c', is_cat ? 1 : 0); + if ('requestIdleCallback' in window) + window.requestIdleCallback(() => { + App.Hash.set({f: id, c: is_cat ? 1 : 0}); + }); + else + App.Hash.set({f: id, c: is_cat ? 1 : 0}); this._active_feed_id = id; this._active_feed_is_cat = is_cat; diff --git a/js/tt-rss.js b/js/tt-rss.js index 4a7f2e643..10fafc447 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -69,15 +69,3 @@ require(["dojo/_base/kernel", }); }); -/* exported hash_get */ -function hash_get(key) { - const obj = dojo.queryToObject(window.location.hash.substring(1)); - return obj[key]; -} - -/* exported hash_set */ -function hash_set(key, value) { - const obj = dojo.queryToObject(window.location.hash.substring(1)); - obj[key] = value; - window.location.hash = dojo.objectToQuery(obj); -}