From 6183461645b35af9d3d41a168edbf57ac340e8a1 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 26 Nov 2011 23:19:04 +0400 Subject: [PATCH] auto-catchup fully visible articles in the buffer when switching away from already loaded real feed --- feedlist.js | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/feedlist.js b/feedlist.js index 833fe9e2..4f1a56c2 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]); -- 2.39.5