diff options
author | Andrew Dolgov <[email protected]> | 2005-08-23 07:13:28 +0100 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2005-08-23 07:13:28 +0100 |
commit | 525116d484a7a2589fc8ad891af3e14ff07a3724 (patch) | |
tree | 60f624747ee71198340040086b87c5503f0054f1 | |
parent | b82af8c382441bddfb9fccf5828ff7e7c61682ac (diff) |
asynchronous feed updating
-rw-r--r-- | backend.php | 12 | ||||
-rw-r--r-- | tt-rss.js | 40 |
2 files changed, 42 insertions, 10 deletions
diff --git a/backend.php b/backend.php index 012396182..0a91a6412 100644 --- a/backend.php +++ b/backend.php @@ -17,11 +17,13 @@ $subop = $_GET["subop"]; - if ($subop == "forceUpdateAll") { - update_all_feeds($link, true); + if ($subop == "forceUpdateAllFeeds") { + print "[rpc] forceUpdateAll"; + update_all_feeds($link, true); } - if ($subop == "updateAll") { + if ($subop == "updateAllFeeds") { + print "[rpc] updateAll"; update_all_feeds($link, false); } @@ -49,7 +51,7 @@ pg_query("UPDATE ttrss_entries SET last_read = NOW(),unread = false"); } - update_all_feeds($link, $fetch); + // update_all_feeds($link, $fetch); $result = pg_query("SELECT *, (SELECT count(id) FROM ttrss_entries @@ -101,7 +103,7 @@ print "<p align=\"center\">All feeds: <a class=\"button\" - href=\"javascript:updateFeedList(false,true)\">Update</a>"; + href=\"javascript:scheduleFeedUpdate()\">Update</a>"; print " <a class=\"button\" href=\"javascript:catchupAllFeeds()\">Mark as read</a></p>"; @@ -4,8 +4,10 @@ */ var xmlhttp = false; +var xmlhttp_rpc = false; var total_unread = 0; +var first_run = true; /*@cc_on @*/ /*@if (@_jscript_version >= 5) @@ -24,6 +26,8 @@ try { if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); + xmlhttp_rpc = new XMLHttpRequest(); + } function printLockingError() { @@ -49,7 +53,12 @@ function feedlist_callback() { update_title(); } - notify(""); + if (first_run) { + scheduleFeedUpdate(); + first_run = false; + } else { + notify(""); + } } } @@ -92,12 +101,33 @@ function view_callback() { } } +function refetch_callback() { + if (xmlhttp_rpc.readyState == 4) { + // feeds are updated in background + updateFeedList(false, false); +// notify("All feeds updated"); + } +} + +function scheduleFeedUpdate() { + + notify("Updating feeds in background..."); + + var query_str = "backend.php?op=rpc&subop=forceUpdateAllFeeds"; + + if (xmlhttp_rpc.readyState == 4 || xmlhttp_rpc.readyState == 0) { + xmlhttp_rpc.open("GET", query_str, true); + xmlhttp_rpc.onreadystatechange=refetch_callback; + xmlhttp_rpc.send(null); + } else { + printLockingError(); + } +} -function updateFeedList(called_from_timer, fetch) { +function updateFeedList(silent, fetch) { - if (called_from_timer != true) { - //document.getElementById("feeds").innerHTML = "Loading feeds, please wait..."; - notify("Updating feeds..."); + if (silent != true) { + notify("Updating feed list..."); } var query_str = "backend.php?op=feeds"; |