]> git.wh0rd.org - tt-rss.git/commitdiff
use batch-based catching up in cdmExpandArticle() to reduce server load
authorAndrew Dolgov <noreply@madoka.volgo-balt.ru>
Tue, 11 Aug 2015 09:25:11 +0000 (12:25 +0300)
committerAndrew Dolgov <noreply@madoka.volgo-balt.ru>
Tue, 11 Aug 2015 09:25:11 +0000 (12:25 +0300)
js/viewfeed.js

index e84ed710dbf2d608f7ccbcb6260201a9d1d51fb4..16b3bb1ee38d54cbd73d4a6341ccffd7b46c0198 100644 (file)
@@ -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