X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=js%2Ffeedlist.js;h=ec3b09dabb24552a34a8e9a588b9900527996be6;hb=f820f205d0ec1c5ce9027e49755fc8642b0c5b42;hp=972fa3b1efd0f6324e04dd25ad4eab30cddf3287;hpb=32834a74125c4ad30ca9c47359ef74edb45476ca;p=tt-rss.git diff --git a/js/feedlist.js b/js/feedlist.js index 972fa3b1..ec3b09da 100644 --- a/js/feedlist.js +++ b/js/feedlist.js @@ -3,8 +3,6 @@ var _infscroll_request_sent = 0; var _search_query = false; var _viewfeed_last = 0; -var counter_timeout_id = false; - var counters_last_request = 0; function viewCategory(cat) { @@ -68,68 +66,18 @@ function viewfeed(feed, method, is_cat, offset, background, infscroll_req) { last_requested_article = 0; - var cached_headlines = false; - - if (feed == getActiveFeedId() && activeFeedIsCat() == is_cat) { - cache_delete("feed:" + feed + ":" + is_cat); - } else { - cached_headlines = cache_get("feed:" + feed + ":" + is_cat); - - if (_search_query) _search_query = false; - - // switching to a different feed, we might as well catchup stuff visible - // in headlines buffer (if any) - // disabled for now because this behavior is considered confusing -fox - /* if (!background && isCdmMode() && 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 (feed != getActiveFeedId() || activeFeedIsCat() != is_cat) { + if (!background && _search_query) _search_query = false; } - if (offset == 0 && !background) - dijit.byId("content-tabs").selectChild( - dijit.byId("content-tabs").getChildren()[0]); - if (!background) { _viewfeed_last = get_timestamp(); if (getActiveFeedId() != feed || offset == 0) { - active_post_id = 0; + setActiveArticleId(0); _infscroll_disable = 0; } - if (!offset && !method && cached_headlines && !background) { - try { - render_local_headlines(feed, is_cat, JSON.parse(cached_headlines)); - return; - } catch (e) { - console.warn("render_local_headlines failed: " + e); - } - } - if (offset != 0 && !method) { var timestamp = get_timestamp(); @@ -140,8 +88,6 @@ function viewfeed(feed, method, is_cat, offset, background, infscroll_req) { _infscroll_request_sent = timestamp; } - - hideAuxDlg(); } Form.enable("main_toolbar_form"); @@ -149,7 +95,11 @@ function viewfeed(feed, method, is_cat, offset, background, infscroll_req) { var toolbar_query = Form.serialize("main_toolbar_form"); var query = "?op=feeds&method=view&feed=" + feed + "&" + - toolbar_query + "&m=" + param_escape(method); + toolbar_query; + + if (method) { + query = query + "&m=" + param_escape(method); + } if (!background) { if (_search_query) { @@ -165,21 +115,20 @@ function viewfeed(feed, method, is_cat, offset, background, infscroll_req) { if (vgroup_last_feed) { query = query + "&vgrlf=" + param_escape(vgroup_last_feed); } + } else { + if (!method && !is_cat && feed == getActiveFeedId()) { + query = query + "&m=ForceUpdate"; + } } Form.enable("main_toolbar_form"); - if (!offset) - if (!is_cat) { - if (!setFeedExpandoIcon(feed, is_cat, 'images/indicator_white.gif')) - notify_progress("Loading, please wait...", true); - } else { + if (!setFeedExpandoIcon(feed, is_cat, + (is_cat) ? 'images/indicator_tiny.gif' : 'images/indicator_white.gif')) notify_progress("Loading, please wait...", true); - } } query += "&cat=" + is_cat; - query += "&include_children=" + dijit.byId("include_children").attr("checked"); console.log(query); @@ -199,90 +148,59 @@ function feedlist_init() { try { console.log("in feedlist init"); - hideOrShowFeeds(getInitParam("hide_read_feeds") == 1); document.onkeydown = hotkey_handler; setTimeout("hotkey_prefix_timeout()", 5*1000); - if (!getActiveFeedId()) { - setTimeout("viewfeed(-3)", 100); + if (!getActiveFeedId()) { + viewfeed(-3); + } else { + viewfeed(getActiveFeedId(), '', activeFeedIsCat()); } - console.log("T:" + - getInitParam("cdm_auto_catchup") + " " + getFeedUnread(-3)); - hideOrShowFeeds(getInitParam("hide_read_feeds") == 1); - setTimeout("timeout()", 5000); - setTimeout("precache_headlines_idle()", 15000); + request_counters(true); + timeout(); } catch (e) { exception_error("feedlist/init", e); } } -function request_counters_real() { - try { - console.log("requesting counters..."); - - var query = "?op=rpc&method=getAllCounters&seq=" + next_seq(); - - query = query + "&omode=flc"; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - try { - handle_rpc_json(transport); - } catch (e) { - exception_error("viewfeed/getcounters", e); - } - } }); - - } catch (e) { - exception_error("request_counters_real", e); - } -} - - -function request_counters() { +function request_counters(force) { try { - - //if (getInitParam("bw_limit") == "1") return; - var date = new Date(); var timestamp = Math.round(date.getTime() / 1000); - if (timestamp - counters_last_request > 5) { + if (force || timestamp - counters_last_request > 5) { console.log("scheduling request of counters..."); - window.clearTimeout(counter_timeout_id); - counter_timeout_id = window.setTimeout("request_counters_real()", 1000); - counters_last_request = timestamp; - } else { - console.log("request_counters: rate limit reached: " + (timestamp - counters_last_request)); - } - } catch (e) { - exception_error("request_counters", e); - } -} - -function displayNewContentPrompt(id) { - try { + var query = "?op=rpc&method=getAllCounters&seq=" + next_seq(); - var msg = "" + - __("New articles available in this feed (click to show)") + ""; + if (!force) + query = query + "&last_article_id=" + getInitParam("last_article_id"); - msg = msg.replace("%s", getFeedName(id)); + console.log(query); - $('auxDlg').innerHTML = msg; + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + try { + handle_rpc_json(transport); + } catch (e) { + exception_error("request_counters", e); + } + } }); - new Effect.Appear('auxDlg', {duration : 0.5}); + } else { + console.log("request_counters: rate limit reached: " + (timestamp - counters_last_request)); + } } catch (e) { - exception_error("displayNewContentPrompt", e); + exception_error("request_counters", e); } } @@ -296,7 +214,6 @@ function parse_counters(elems, scheduled_call) { var error = elems[l].error; var has_img = elems[l].has_img; var updated = elems[l].updated; - var child_unread = parseInt(elems[l].child_counter); if (id == "global-unread") { global_unread = ctr; @@ -309,17 +226,8 @@ function parse_counters(elems, scheduled_call) { continue; } - // TODO: enable new content notification for categories - - if (!activeFeedIsCat() && id == getActiveFeedId() - && ctr > getFeedUnread(id) && scheduled_call) { - displayNewContentPrompt(id); - } - if (getFeedUnread(id, (kind == "cat")) != ctr || - (kind == "cat" && getCatParam(id) != child_unread)) { - - cache_delete("feed:" + id + ":" + (kind == "cat")); + (kind == "cat")) { } setFeedUnread(id, (kind == "cat"), ctr); @@ -336,8 +244,6 @@ function parse_counters(elems, scheduled_call) { setFeedIcon(id, false, 'images/blank_icon.gif'); } } - } else { - setCatParam(id, child_unread); } } @@ -427,27 +333,6 @@ function setFeedValue(feed, is_cat, key, value) { } } -function setCatParam(cat, value) { - try { - var tree = dijit.byId("feedTree"); - - if (tree && tree.model) - return tree.setCatParam(cat, value); - - } catch (e) { - // - } -} - -function getCatParam(cat) { - try { - return getFeedValue(cat, true, "child_unread"); - } catch (e) { - // - } -} - - function selectFeed(feed, is_cat) { try { var tree = dijit.byId("feedTree"); @@ -581,15 +466,12 @@ function catchupFeed(feed, is_cat) { function decrementFeedCounter(feed, is_cat) { try { - // we have subcats, no way to figure out if this article is - // actually from this category - if (is_cat && getCatParam(feed) > 0) - return; - var ctr = getFeedUnread(feed, is_cat); if (ctr > 0) { setFeedUnread(feed, is_cat, ctr - 1); + global_unread = global_unread - 1; + updateTitle(); if (!is_cat) { var cat = parseInt(getFeedCategory(feed)); @@ -604,9 +486,9 @@ function decrementFeedCounter(feed, is_cat) { } } - cache_delete("feed:" + feed + ":" + is_cat); - } catch (e) { exception_error("decrement_feed_counter", e); } } + +