summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2005-08-23 07:13:28 +0100
committerAndrew Dolgov <[email protected]>2005-08-23 07:13:28 +0100
commit525116d484a7a2589fc8ad891af3e14ff07a3724 (patch)
tree60f624747ee71198340040086b87c5503f0054f1
parentb82af8c382441bddfb9fccf5828ff7e7c61682ac (diff)
asynchronous feed updating
-rw-r--r--backend.php12
-rw-r--r--tt-rss.js40
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 "&nbsp;<a class=\"button\"
href=\"javascript:catchupAllFeeds()\">Mark as read</a></p>";
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 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";