From 3e52ab08db639e8cffd1216ec02fc4b18dbdd373 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 4 Feb 2009 23:30:05 +0300 Subject: [PATCH] offline downloader: better detect when no more additional requests are needed --- modules/backend-rpc.php | 2 ++ offline.js | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php index 033646c3..78ccd1fd 100644 --- a/modules/backend-rpc.php +++ b/modules/backend-rpc.php @@ -555,6 +555,8 @@ $limit = 50; $skip = $limit*($stage-1); + print ""; + if ($amount > 0) $amount -= $skip; if ($amount > 0) { diff --git a/offline.js b/offline.js index 05c19025..f50644b7 100644 --- a/offline.js +++ b/offline.js @@ -549,11 +549,19 @@ function offline_download_parse(stage, transport) { [id, title, has_icon]); } - window.setTimeout("update_offline_data("+(stage+1)+")", 60*1000); + window.setTimeout("update_offline_data("+(stage+1)+")", 10*1000); } else { var articles = transport.responseXML.getElementsByTagName("article"); + var limit = transport.responseXML.getElementsByTagName("limit")[0]; + + if (limit) { + limit = limit.getAttribute("value"); + } else { + limit = 0; + } + var articles_found = 0; for (var i = 0; i < articles.length; i++) { @@ -576,10 +584,14 @@ function offline_download_parse(stage, transport) { } } - if (articles_found > 0) { - window.setTimeout("update_offline_data("+(stage+1)+")", 60*1000); + debug("downloaded articles: " + articles_found + " limit: " + limit); + + if (articles_found >= limit) { + window.setTimeout("update_offline_data("+(stage+1)+")", 10*1000); + debug("update_offline_data: done " + stage); } else { window.setTimeout("update_offline_data(0)", 1800*1000); + debug("update_offline_data: finished"); var date = new Date(); var ts = Math.round(date.getTime() / 1000); @@ -624,7 +636,6 @@ function update_offline_data(stage) { new Ajax.Request(query, { onComplete: function(transport) { offline_download_parse(stage, transport); - debug("update_offline_data: done " + stage); } }); } catch (e) { -- 2.39.5