From 6cc1fab32228f509db4ecf2fa7973cc7c46a8ac7 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 21 May 2008 05:38:28 +0100 Subject: [PATCH] check for failures to request counters in async way after viewfeed/view --- backend.php | 13 +++++++++++-- feedlist.js | 6 +++++- functions.js | 5 ++++- viewfeed.js | 4 ++++ 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 ""; // in prefetch mode we only output requested cids, main article @@ -210,7 +212,7 @@ } } - if ($mode != "prefetch_old") { + if ($mode != "prefetch_old" && !$csync) { print ""; getAllCounters($link, $omode); print ""; @@ -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 ""; getAllCounters($link, $omode, $feed); print ""; 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("all_counters_callback2 IN: " + transport + ""); parse_counters_reply(transport); debug("all_counters_callback2 OUT: " + transport + ""); 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...");