summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2021-03-06 22:41:46 +0300
committerAndrew Dolgov <[email protected]>2021-03-06 22:41:46 +0300
commit1d9fa2a42e2cad9ea76ad22edf8919942c853be1 (patch)
tree19f82a883aebd76871d94c81692a26f8aad3d73a /js
parent7b0b5b55c7a7e0f5e5f63083a5131ea85109bbec (diff)
reduce overhead in hash set/get
Diffstat (limited to 'js')
-rw-r--r--js/App.js11
-rw-r--r--js/Feeds.js19
-rw-r--r--js/tt-rss.js12
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);
-}