summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2011-11-26 23:19:04 +0400
committerAndrew Dolgov <[email protected]>2011-11-26 23:19:04 +0400
commit6183461645b35af9d3d41a168edbf57ac340e8a1 (patch)
tree876285126e394d1f94465bdabf65ddddc30fcecb
parent79ddf6aa771e449b4ea4cb0191a4470b0ddc52e2 (diff)
auto-catchup fully visible articles in the buffer when switching away from already loaded real feed
-rw-r--r--feedlist.js35
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]);