From 1b04a298efd0ea33086eeeb3fc7de6281c9881d1 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 28 Feb 2013 13:06:54 +0400 Subject: [PATCH] store active feed id in url hash and restore on reload --- js/feedlist.js | 10 +++++----- js/tt-rss.js | 32 ++++++++++++++++++++++---------- js/viewfeed.js | 4 ++-- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/js/feedlist.js b/js/feedlist.js index b2aadab62..3d4f1f4c9 100644 --- a/js/feedlist.js +++ b/js/feedlist.js @@ -204,11 +204,11 @@ function feedlist_init() { document.onkeydown = hotkey_handler; setTimeout("hotkey_prefix_timeout()", 5*1000); - if (!getActiveFeedId()) - viewfeed(-3); - - console.log("T:" + - getInitParam("cdm_auto_catchup") + " " + getFeedUnread(-3)); + if (!getActiveFeedId()) { + viewfeed(-3); + } else { + viewfeed(getActiveFeedId(), '', activeFeedIsCat()); + } hideOrShowFeeds(getInitParam("hide_read_feeds") == 1); diff --git a/js/tt-rss.js b/js/tt-rss.js index 7462d933d..9814718f0 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -1,6 +1,4 @@ var global_unread = -1; -var _active_feed_id = undefined; -var _active_feed_is_cat = false; var hotkey_prefix = false; var hotkey_prefix_pressed = false; var _widescreen_mode = false; @@ -16,13 +14,12 @@ function get_seq() { } function activeFeedIsCat() { - return _active_feed_is_cat; + return hash_get('c') == "1"; } function getActiveFeedId() { try { - //console.log("gAFID: " + _active_feed_id); - return _active_feed_id; + return hash_get('f'); } catch (e) { exception_error("getActiveFeedId", e); } @@ -30,11 +27,8 @@ function getActiveFeedId() { function setActiveFeedId(id, is_cat) { try { - _active_feed_id = id; - - if (is_cat != undefined) { - _active_feed_is_cat = is_cat; - } + hash_set('f', id); + hash_set('c', is_cat ? 1 : 0); selectFeed(id, is_cat); } catch (e) { @@ -948,3 +942,21 @@ function update_random_feed() { exception_error("update_random_feed", e); } } + +function hash_get(key) { + try { + kv = window.location.hash.substring(1).toQueryParams(); + return kv[key]; + } catch (e) { + exception_error("hash_set", e); + } +} +function hash_set(key, value) { + try { + kv = window.location.hash.substring(1).toQueryParams(); + kv[key] = value; + window.location.hash = $H(kv).toQueryString(); + } catch (e) { + exception_error("hash_set", e); + } +} diff --git a/js/viewfeed.js b/js/viewfeed.js index b8dc05aed..658033c62 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -59,7 +59,7 @@ function headlines_callback2(transport, offset, background, infscroll_req) { is_cat || feed_id <= 0); try { - if (offset == 0 && infscroll_req == false) { + if (infscroll_req == false) { $("headlines-frame").scrollTop = 0; } } catch (e) { }; @@ -78,7 +78,7 @@ function headlines_callback2(transport, offset, background, infscroll_req) { var articles = reply['articles']; //var runtime_info = reply['runtime-info']; - if (offset == 0 && infscroll_req == false) { + if (infscroll_req == false) { loaded_article_ids = []; dijit.byId("headlines-frame").attr('content',