summaryrefslogtreecommitdiff
path: root/js/viewfeed.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2015-08-11 12:25:11 +0300
committerAndrew Dolgov <[email protected]>2015-08-11 12:25:11 +0300
commit176a489e54557d2b3157145d09dd1c57c204bcf7 (patch)
tree02d73911dadaccbc2d38037d3c372a24ab8042ec /js/viewfeed.js
parenteaec06f950439db7d2ae0c7e25e915639e2ae281 (diff)
use batch-based catching up in cdmExpandArticle() to reduce server load
Diffstat (limited to 'js/viewfeed.js')
-rw-r--r--js/viewfeed.js35
1 files changed, 22 insertions, 13 deletions
diff --git a/js/viewfeed.js b/js/viewfeed.js
index e84ed710d..16b3bb1ee 100644
--- a/js/viewfeed.js
+++ b/js/viewfeed.js
@@ -568,7 +568,7 @@ function moveToPost(mode, noscroll, noexpand) {
console.log("cur: " + getActiveArticleId() + " next: " + next_id);
if (mode == "next") {
- if (next_id /*|| getActiveArticleId()*/) {
+ if (next_id || getActiveArticleId()) {
if (isCdmMode()) {
var article = $("RROW-" + getActiveArticleId());
@@ -1305,6 +1305,8 @@ function headlines_scroll_handler(e) {
updateFloatingTitle();
}
+ catchupCurrentBatchIfNeeded();
+
if (getInitParam("cdm_auto_catchup") == 1) {
// let's get DOM some time to settle down
@@ -1326,16 +1328,6 @@ function headlines_scroll_handler(e) {
});
- if (catchup_id_batch.length > 0) {
- window.clearTimeout(catchup_timeout_id);
-
- catchup_timeout_id = window.setTimeout('catchupBatchedArticles()', 500);
-
- if (catchup_id_batch.length >= 10) {
- catchupBatchedArticles();
- }
- }
-
if (_infscroll_disable) {
var child = $$("#headlines-frame div[id*=RROW]").last();
@@ -1370,6 +1362,8 @@ function catchupBatchedArticles() {
try {
if (catchup_id_batch.length > 0 && !_infscroll_request_sent && !_catchup_request_sent) {
+ console.log("catchupBatchedArticles: working");
+
// make a copy of the array
var batch = catchup_id_batch.slice();
var query = "?op=rpc&method=catchupSelected" +
@@ -1573,8 +1567,12 @@ function cdmExpandArticle(id, noexpand) {
if (old_offset > new_offset)
$("headlines-frame").scrollTop -= (old_offset-new_offset);
- if (!noexpand)
- toggleUnread(id, 0, true);
+ if (!noexpand) {
+ if (catchup_id_batch.indexOf(id) == -1)
+ catchup_id_batch.push(id);
+
+ catchupCurrentBatchIfNeeded();
+ }
toggleSelected(id);
$("RROW-" + id).addClassName("active");
@@ -2430,6 +2428,17 @@ function updateFloatingTitle(unread_only) {
}
}
+function catchupCurrentBatchIfNeeded() {
+ if (catchup_id_batch.length > 0) {
+ window.clearTimeout(catchup_timeout_id);
+ catchup_timeout_id = window.setTimeout('catchupBatchedArticles()', 1000);
+
+ if (catchup_id_batch.length >= 10) {
+ catchupBatchedArticles();
+ }
+ }
+}
+
function cdmFooterClick(event) {
event.stopPropagation();
} \ No newline at end of file