X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=feedlist.js;h=8bbc24626ff533101f238b3495d4d9c74a8386de;hb=6823cc39448ece6577747b5a5d8ca7ca6891e96a;hp=a8c1cd5c865b239b14770fa09c5bc97c12331986;hpb=9bc082151a809923953cfdc6ccf0d803a06b01cc;p=tt-rss.git diff --git a/feedlist.js b/feedlist.js index a8c1cd5c..8bbc2462 100644 --- a/feedlist.js +++ b/feedlist.js @@ -1,5 +1,6 @@ var _feed_cur_page = 0; var _infscroll_disable = 0; +var _infscroll_request_sent = 0; function viewCategory(cat) { active_feed_is_cat = true; @@ -22,8 +23,6 @@ function viewNextFeedPage() { try { if (!getActiveFeedId()) return; - notify_progress("Loading, please wait..."); - viewfeed(getActiveFeedId(), undefined, undefined, undefined, undefined, _feed_cur_page+1); @@ -37,6 +36,8 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) { // if (!offset) page_offset = 0; + var force_nocache = false; + var page_offset = 0; if (offset > 0) { @@ -53,6 +54,20 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) { _infscroll_disable = 0; } + if (page_offset != 0 && !subop) { + var date = new Date(); + var timestamp = Math.round(date.getTime() / 1000); + + debug("" + _infscroll_request_sent + " : " + timestamp + ""); + + if (_infscroll_request_sent && _infscroll_request_sent + 30 > timestamp) { + debug("infscroll request in progress, aborting"); + return; + } + + _infscroll_request_sent = timestamp; + } + enableHotkeys(); closeInfoBox(); @@ -62,7 +77,10 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) { var toolbar_form = document.forms["main_toolbar_form"]; var toolbar_query = Form.serialize("main_toolbar_form"); - if (document.forms["main_toolbar_form"].query) { + if (toolbar_form.query) { + if (toolbar_form.query.value != "") { + force_nocache = true; + } toolbar_form.query.value = ""; } @@ -73,6 +91,7 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) { var search_query = Form.serialize("search_form"); query = query + "&" + search_query; closeInfoBox(true); + force_nocache = true; } // debug("IS_CAT_STORED: " + activeFeedIsCat() + ", IS_CAT: " + is_cat); @@ -93,7 +112,8 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) { if (next_unread_feed && show_next_feed && !activeFeedIsCat()) { query = query + "&nuf=" + param_escape(next_unread_feed); - setActiveFeedId(next_unread_feed); + //setActiveFeedId(next_unread_feed); + feed = next_unread_feed; } } @@ -122,22 +142,78 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) { query = query + "&omode=flc"; } - if (!page_offset) { - notify_progress("Loading, please wait...", true); - } - var container = document.getElementById("headlinesInnerContainer"); - if (container && page_offset == 0) { + if (container && page_offset == 0 && !isCdmMode()) { new Effect.Fade(container, {duration: 1, to: 0.01, - queue: { position:'end', scope: 'FeED-' + feed, limit: 1 } } ); + queue: { position:'end', scope: 'FEEDL-' + feed, limit: 1 } } ); } - new Ajax.Request(query, { - asynchronous: page_offset == 0, - onComplete: function(transport) { - headlines_callback2(transport, feed, is_cat, page_offset); - } }); + var unread_ctr = get_feed_unread(feed); + var cache_check = false; + + if (unread_ctr != -1 && !page_offset && !force_nocache && !subop) { + + var cache_prefix = ""; + + if (is_cat) { + cache_prefix = "C:"; + } else { + cache_prefix = "F:"; + } + + cache_check = cache_check_param(cache_prefix + feed, unread_ctr); + debug("headline cache check: " + cache_check); + } + + if (cache_check) { + var f = document.getElementById("headlines-frame"); + + clean_feed_selections(); + + setActiveFeedId(feed); + + if (is_cat != undefined) { + active_feed_is_cat = is_cat; + } + + if (!is_cat) { + var feedr = document.getElementById("FEEDR-" + feed); + if (feedr && !feedr.className.match("Selected")) { + feedr.className = feedr.className + "Selected"; + } + } + + f.innerHTML = cache_find_param(cache_prefix + feed, unread_ctr); + + var query = "backend.php?op=rpc&subop=getAllCounters"; + + if (tagsAreDisplayed()) { + query = query + "&omode=tl"; + } else { + query = query + "&omode=flc"; + } + + new Ajax.Request(query, { + onComplete: function(transport) { + try { + all_counters_callback2(transport); + } catch (e) { + exception_error("viewfeed/getcounters", e); + } + } }); + + } else { + + if (!page_offset) { + notify_progress("Loading, please wait...", true); + } + + new Ajax.Request(query, { + onComplete: function(transport) { + headlines_callback2(transport, feed, is_cat, page_offset); + } }); + } } catch (e) { exception_error("viewfeed", e); @@ -152,12 +228,12 @@ function toggleCollapseCat_af(effect) { var elem = effect.element; var cat = elem.id.replace("FCATLIST-", ""); var cap = document.getElementById("FCAP-" + cat); - + if (Element.visible(elem)) { - cap.innerHTML = cap.innerHTML.replace("...", ""); + cap.innerHTML = cap.innerHTML.replace("…", ""); } else { - if (cap.innerHTML.lastIndexOf("...") != cap.innerHTML.length-3) { - cap.innerHTML = cap.innerHTML + "..."; + if (cap.innerHTML.lastIndexOf("…") != cap.innerHTML.length-3) { + cap.innerHTML = cap.innerHTML + "…"; } } @@ -251,10 +327,45 @@ function feedlist_init() { debug("some feed is open on feedlist refresh, reloading"); setTimeout("viewCurrentFeed()", 100); } else { - setTimeout("viewfeed(-3)", 100); + if (getInitParam("cdm_auto_catchup") != 1) { + setTimeout("viewfeed(-3)", 100); + } + } + + if (getInitParam("theme") == "") { + setTimeout("hide_footer()", 5000); } } catch (e) { exception_error("feedlist/init", e); } } + +function hide_footer_af(effect) { + try { + var c = document.getElementById("content-frame"); + + if (c) { + c.style.bottom = "0px"; + } else { + var h = document.getElementById("headlines-frame"); + + if (h) { + h.style.bottom = "0px"; + } + } + + } catch (e) { + exception_error("hide_footer_af", e); + } +} + +function hide_footer() { + try { + if (Element.visible("footer")) { + new Effect.Fade("footer", { afterFinish: hide_footer_af }); + } + } catch (e) { + exception_error("hide_footer", e); + } +}