var _infscroll_disable = 0;
var _infscroll_request_sent = 0;
var _search_query = false;
+var _viewfeed_last = 0;
var counter_timeout_id = false;
var offset = 0;
var view_mode = document.forms["main_toolbar_form"].view_mode.value;
- var num_unread = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length;
+ var unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length;
var num_all = $$("#headlines-frame > div[id*=RROW]").length;
+ var num_unread = getFeedUnread(getActiveFeedId(), activeFeedIsCat());
// TODO implement marked & published
console.warn("loadMoreHeadlines: published is not implemented, falling back.");
offset = num_all;
} else if (view_mode == "unread") {
- offset = num_unread;
+ offset = unread_in_buffer;
+ } else if (_search_query) {
+ offset = num_all;
} else if (view_mode == "adaptive") {
if (num_unread > 0)
- offset = num_unread;
+ offset = unread_in_buffer;
else
offset = num_all;
} else {
offset = num_all;
}
+ console.log("offset: " + offset);
+
viewfeed(getActiveFeedId(), '', activeFeedIsCat(), offset, false, true);
} catch (e) {
} 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
dijit.byId("content-tabs").getChildren()[0]);
if (!background) {
+ _viewfeed_last = get_timestamp();
+
if (getActiveFeedId() != feed || offset == 0) {
active_post_id = 0;
_infscroll_disable = 0;
}
if (offset != 0 && !method) {
- var date = new Date();
- var timestamp = Math.round(date.getTime() / 1000);
+ var timestamp = get_timestamp();
if (_infscroll_request_sent && _infscroll_request_sent + 30 > timestamp) {
//console.log("infscroll request in progress, aborting");
if (_search_query) {
force_nocache = true;
query = query + "&" + _search_query;
- _search_query = false;
+ //_search_query = false;
}
if (offset != 0) {
try {
- if (getInitParam("bw_limit") == "1") return;
+ //if (getInitParam("bw_limit") == "1") return;
var date = new Date();
var timestamp = Math.round(date.getTime() / 1000);
displayNewContentPrompt(id);
}
- if (getFeedUnread(id, (kind == "cat")) != ctr)
+ if (getFeedUnread(id, (kind == "cat")) != ctr ||
+ (kind == "cat" && getCatParam(id) != child_unread)) {
+
cache_delete("feed:" + id + ":" + (kind == "cat"));
+ }
setFeedUnread(id, (kind == "cat"), ctr);
}
}
+function getCatParam(cat) {
+ try {
+ return getFeedValue(cat, true, "child_unread");
+ } catch (e) {
+ //
+ }
+}
+
function selectFeed(feed, is_cat) {
try {
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) {