diff options
author | Andrew Dolgov <[email protected]> | 2011-11-26 23:19:04 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2011-11-26 23:19:04 +0400 |
commit | 6183461645b35af9d3d41a168edbf57ac340e8a1 (patch) | |
tree | 876285126e394d1f94465bdabf65ddddc30fcecb | |
parent | 79ddf6aa771e449b4ea4cb0191a4470b0ddc52e2 (diff) |
auto-catchup fully visible articles in the buffer when switching away from already loaded real feed
-rw-r--r-- | feedlist.js | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/feedlist.js b/feedlist.js index 833fe9e26..4f1a56c2a 100644 --- a/feedlist.js +++ b/feedlist.js @@ -64,11 +64,42 @@ function viewfeed(feed, subop, is_cat, offset, background, infscrol_req) { var cached_headlines = false; - if (feed == getActiveFeedId()) + if (feed == getActiveFeedId()) { cache_delete("feed:" + feed + ":" + is_cat); - else + } else { cached_headlines = cache_get("feed:" + feed + ":" + is_cat); + // switching to a different feed, we might as well catchup stuff visible + // in headlines buffer (if any) + if (!background && getInitParam("cdm_auto_catchup") == 1 && parseInt(getActiveFeedId()) > 0) { + + $$("#headlines-frame > div[id*=RROW][class*=Unread]").each( + function(child) { + var hf = $("headlines-frame"); + + if (hf.scrollTop + hf.offsetHeight >= + child.offsetTop + child.offsetHeight) { + + var id = child.id.replace("RROW-", ""); + + if (catchup_id_batch.indexOf(id) == -1) + catchup_id_batch.push(id); + + } + + if (catchup_id_batch.length > 0) { + window.clearTimeout(catchup_timeout_id); + + if (!_infscroll_request_sent) { + catchup_timeout_id = window.setTimeout('catchupBatchedArticles()', + 2000); + } + } + + }); + } + } + if (offset == 0) dijit.byId("content-tabs").selectChild( dijit.byId("content-tabs").getChildren()[0]); |