summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2008-05-21 05:38:28 +0100
committerAndrew Dolgov <[email protected]>2008-05-21 05:38:28 +0100
commit6cc1fab32228f509db4ecf2fa7973cc7c46a8ac7 (patch)
treee594675d83dd59fcfc11921396f6c5c5266e7a67
parent06c88b8dc37dceb236f1c7eea795a86088fb6135 (diff)
check for failures to request counters in async way after viewfeed/view
-rw-r--r--backend.php13
-rw-r--r--feedlist.js6
-rw-r--r--functions.js5
-rw-r--r--viewfeed.js4
4 files changed, 24 insertions, 4 deletions
diff --git a/backend.php b/backend.php
index 20411cc0a..8cf5c1691 100644
--- a/backend.php
+++ b/backend.php
@@ -193,6 +193,8 @@
$mode = db_escape_string($_GET["mode"]);
$omode = db_escape_string($_GET["omode"]);
+ $csync = $_GET["csync"];
+
print "<reply>";
// in prefetch mode we only output requested cids, main article
@@ -210,7 +212,7 @@
}
}
- if ($mode != "prefetch_old") {
+ if ($mode != "prefetch_old" && !$csync) {
print "<counters>";
getAllCounters($link, $omode);
print "</counters>";
@@ -238,6 +240,7 @@
$next_unread_feed = db_escape_string($_GET["nuf"]);
$offset = db_escape_string($_GET["skip"]);
$vgroup_last_feed = db_escape_string($_GET["vgrlf"]);
+ $csync = $_GET["csync"];
set_pref($link, "_DEFAULT_VIEW_MODE", $view_mode);
set_pref($link, "_DEFAULT_VIEW_LIMIT", $limit);
@@ -288,7 +291,13 @@
if ($_GET["debug"]) $timing_info = print_checkpoint("20", $timing_info);
- if (time() - $_SESSION["get_all_counters_stamp"] > 300) {
+ $viewfeed_ctr_interval = 300;
+
+ if ($csync) {
+ $viewfeed_ctr_interval = 60;
+ }
+
+ if (time() - $_SESSION["get_all_counters_stamp"] > $viewfeed_ctr_interval) {
print "<counters>";
getAllCounters($link, $omode, $feed);
print "</counters>";
diff --git a/feedlist.js b/feedlist.js
index 4f5c8d775..1cd784524 100644
--- a/feedlist.js
+++ b/feedlist.js
@@ -168,6 +168,10 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) {
query = query + "&omode=flc";
}
+ if (!async_counters_work) {
+ query = query + "&csync=true";
+ }
+
debug(query);
var container = document.getElementById("headlinesInnerContainer");
@@ -517,7 +521,7 @@ function request_counters_real() {
new Ajax.Request(query, {
onComplete: function(transport) {
try {
- all_counters_callback2(transport);
+ all_counters_callback2(transport, true);
} catch (e) {
exception_error("viewfeed/getcounters", e);
}
diff --git a/functions.js b/functions.js
index b3673b03f..456b65af7 100644
--- a/functions.js
+++ b/functions.js
@@ -2,6 +2,7 @@ var hotkeys_enabled = true;
var xmlhttp_rpc = Ajax.getTransport();
var notify_silent = false;
var last_progress_point = 0;
+var async_counters_work = false;
/* add method to remove element from array */
@@ -626,8 +627,10 @@ function parse_counters_reply(transport, scheduled_call) {
}
-function all_counters_callback2(transport) {
+function all_counters_callback2(transport, async_call) {
try {
+ if (async_call) async_counters_work = true;
+
debug("<b>all_counters_callback2 IN: " + transport + "</b>");
parse_counters_reply(transport);
debug("<b>all_counters_callback2 OUT: " + transport + "</b>");
diff --git a/viewfeed.js b/viewfeed.js
index 73417c3d5..3336dda68 100644
--- a/viewfeed.js
+++ b/viewfeed.js
@@ -431,6 +431,10 @@ function view(id, feed_id, skip_history) {
var crow = document.getElementById("RROW-" + id);
var article_is_unread = crow.className.match("Unread");
+ if (!async_counters_work) {
+ query = query + "&csync=true";
+ }
+
if (!cached_article) {
notify_progress("Loading, please wait...");