From 525116d484a7a2589fc8ad891af3e14ff07a3724 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 23 Aug 2005 07:13:28 +0100 Subject: [PATCH] asynchronous feed updating --- backend.php | 12 +++++++----- 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 "

All feeds: Update"; + href=\"javascript:scheduleFeedUpdate()\">Update"; print " Mark as read

"; diff --git a/tt-rss.js b/tt-rss.js index c78a4287d..125dbad76 100644 --- a/tt-rss.js +++ b/tt-rss.js @@ -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 updateFeedList(called_from_timer, fetch) { +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(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";