]> git.wh0rd.org - tt-rss.git/commitdiff
async headlines_callback fixes
authorAndrew Dolgov <fox@madoka.spb.ru>
Fri, 24 Aug 2007 05:45:42 +0000 (06:45 +0100)
committerAndrew Dolgov <fox@madoka.spb.ru>
Fri, 24 Aug 2007 05:45:42 +0000 (06:45 +0100)
feedlist.js
viewfeed.js

index 70e436897e7fa06dfeccd7cd90ef6891273420d5..07f218b381e5f982b3a6bf3f00e9a9ee80f05226 100644 (file)
@@ -83,30 +83,18 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) {
                        closeInfoBox(true);
                }
 
-               debug("IS_CAT_STORED: " + activeFeedIsCat() + ", IS_CAT: " + is_cat);
-
-               var fe = document.getElementById("FEEDR-" + getActiveFeedId());
-
-               if (fe) {
-                       fe.className = fe.className.replace("Selected", "");
-               }
-
-               setActiveFeedId(feed);
-       
-               if (is_cat != undefined) {
-                       active_feed_is_cat = is_cat;
-               }
+//             debug("IS_CAT_STORED: " + activeFeedIsCat() + ", IS_CAT: " + is_cat);
 
                if (subop == "MarkAllRead") {
 
                        var feedlist = document.getElementById('feedList');
                        
                        var next_unread_feed = getRelativeFeedId(feedlist,
-                                       getActiveFeedId(), "next", true);
+                                       feed, "next", true);
 
                        if (!next_unread_feed) {
                                next_unread_feed = getRelativeFeedId(feedlist,
-                                       -1, "next", true);
+                                       -3, "next", true);
                        }
 
                        var show_next_feed = getInitParam("on_catchup_show_next_feed") == "1";
@@ -117,7 +105,7 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) {
                        }
                }
 
-               if (activeFeedIsCat()) {
+               if (is_cat) {
                        query = query + "&cat=1";
                }
 
@@ -128,13 +116,6 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) {
                var date = new Date();
                var timestamp = Math.round(date.getTime() / 1000);
                query = query + "&ts=" + timestamp
-
-               if (!activeFeedIsCat()) {
-                       var feedr = document.getElementById("FEEDR-" + getActiveFeedId());
-                       if (feedr && !feedr.className.match("Selected")) {      
-                               feedr.className = feedr.className + "Selected";
-                       } 
-               }
                
                disableContainerChildren("headlinesToolbar", false);
                Form.enable("main_toolbar_form");
index a69c012a23d7c1c7f6f5b89575e832ff36d5c31e..e898f84a1d9c4f44dc536b03668403ca5cf792aa 100644 (file)
@@ -45,115 +45,141 @@ function catchup_callback2(transport, callback) {
        }
 }
 
-function headlines_callback2(transport, active_feed_id, active_feed_is_cat, feed_cur_page) {
-       debug("headlines_callback2 [page=" + feed_cur_page + "]");
-
-       var f = document.getElementById("headlines-frame");
+function headlines_callback2(transport, active_feed_id, is_cat, feed_cur_page) {
        try {
-               if (feed_cur_page == 0) { 
-                       debug("resetting headlines scrollTop");
-                       f.scrollTop = 0; 
-               }
-       } catch (e) { };
-
-       if (transport.responseXML) {
-               var headlines = transport.responseXML.getElementsByTagName("headlines")[0];
-               var headlines_count_obj = transport.responseXML.getElementsByTagName("headlines-count")[0];
 
-               var headlines_count = headlines_count_obj.getAttribute("value");
+               debug("headlines_callback2 [page=" + feed_cur_page + "]");
 
-               if (headlines_count == 0) _infscroll_disable = 1;
+               var feeds = document.getElementById("feedList").getElementsByTagName("LI");
 
-               var counters = transport.responseXML.getElementsByTagName("counters")[0];
-               var articles = transport.responseXML.getElementsByTagName("article");
-               var runtime_info = transport.responseXML.getElementsByTagName("runtime-info");
-
-               if (feed_cur_page == 0) {
-                       if (headlines) {
-                               f.innerHTML = headlines.firstChild.nodeValue;
-                       } else {
-                               debug("headlines_callback: returned no data");
-                       f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML data)') + "</div>";
+               for (var i = 0; i < feeds.length; i++) {
+                       if (feeds[i].id && feeds[i].id.match("FEEDR-")) {
+                               feeds[i].className = feeds[i].className.replace("Selected", "");
+                       }                       
+               }
 
+               setActiveFeedId(active_feed_id);
+               
+               if (is_cat != undefined) {
+                       active_feed_is_cat = is_cat;
+               }
+       
+               if (!is_cat) {
+                       var feedr = document.getElementById("FEEDR-" + active_feed_id);
+                       if (feedr && !feedr.className.match("Selected")) {      
+                               feedr.className = feedr.className + "Selected";
+                       } 
+               }
+       
+               var f = document.getElementById("headlines-frame");
+               try {
+                       if (feed_cur_page == 0) { 
+                               debug("resetting headlines scrollTop");
+                               f.scrollTop = 0; 
                        }
-               } else {
-                       if (headlines) {
-                               if (headlines_count > 0) {
-                                       debug("adding some more headlines...");
-
-                                       var c = document.getElementById("headlinesList");
+               } catch (e) { };
+       
+               if (transport.responseXML) {
+                       var headlines = transport.responseXML.getElementsByTagName("headlines")[0];
+                       var headlines_count_obj = transport.responseXML.getElementsByTagName("headlines-count")[0];
+       
+                       var headlines_count = headlines_count_obj.getAttribute("value");
+       
+                       if (headlines_count == 0) _infscroll_disable = 1;
+       
+                       var counters = transport.responseXML.getElementsByTagName("counters")[0];
+                       var articles = transport.responseXML.getElementsByTagName("article");
+                       var runtime_info = transport.responseXML.getElementsByTagName("runtime-info");
+       
+                       if (feed_cur_page == 0) {
+                               if (headlines) {
+                                       f.innerHTML = headlines.firstChild.nodeValue;
+                               } else {
+                                       debug("headlines_callback: returned no data");
+                               f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML data)') + "</div>";
+       
+                               }
+                       } else {
+                               if (headlines) {
+                                       if (headlines_count > 0) {
+                                               debug("adding some more headlines...");
+       
+                                               var c = document.getElementById("headlinesList");
+               
+                                               if (!c) {
+                                                       c = document.getElementById("headlinesInnerContainer");
+                                               }
        
-                                       if (!c) {
-                                               c = document.getElementById("headlinesInnerContainer");
+                                               c.innerHTML = c.innerHTML + headlines.firstChild.nodeValue;
+                                       } else {
+                                               debug("no new headlines received");
                                        }
-
-                                       c.innerHTML = c.innerHTML + headlines.firstChild.nodeValue;
                                } else {
-                                       debug("no new headlines received");
+                                       debug("headlines_callback: returned no data");
+                                       notify_error("Error while trying to load more headlines");      
+                               }
+       
+                       }
+       
+                       if (articles) {
+                               for (var i = 0; i < articles.length; i++) {
+                                       var a_id = articles[i].getAttribute("id");
+                                       debug("found id: " + a_id);
+                                       cache_inject(a_id, articles[i].firstChild.nodeValue);
                                }
                        } else {
-                               debug("headlines_callback: returned no data");
-                               notify_error("Error while trying to load more headlines");      
+                               debug("no cached articles received");
                        }
-
-               }
-
-               if (articles) {
-                       for (var i = 0; i < articles.length; i++) {
-                               var a_id = articles[i].getAttribute("id");
-                               debug("found id: " + a_id);
-                               cache_inject(a_id, articles[i].firstChild.nodeValue);
+       
+                       if (counters) {
+                               debug("parsing piggybacked counters: " + counters);
+                               parse_counters(counters, false);
+                       } else {
+                               debug("counters container not found in reply");
                        }
+       
+                       if (runtime_info) {
+                               debug("parsing runtime info: " + runtime_info[0]);
+                               parse_runtime_info(runtime_info[0]);
+                       } else {
+                               debug("counters container not found in reply");
+                       }
+       
                } else {
-                       debug("no cached articles received");
+                       debug("headlines_callback: returned no XML object");
+                       f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML object)') + "</div>";
                }
-
-               if (counters) {
-                       debug("parsing piggybacked counters: " + counters);
-                       parse_counters(counters, false);
-               } else {
-                       debug("counters container not found in reply");
+       
+               if (typeof correctPNG != 'undefined') {
+                       correctPNG();
                }
-
-               if (runtime_info) {
-                       debug("parsing runtime info: " + runtime_info[0]);
-                       parse_runtime_info(runtime_info[0]);
+       
+               if (_cdm_wd_timeout) window.clearTimeout(_cdm_wd_timeout);
+       
+               if (!document.getElementById("headlinesList") && 
+                               getInitParam("cdm_auto_catchup") == 1) {
+                       debug("starting CDM watchdog");
+                       _cdm_wd_timeout = window.setTimeout("cdmWatchdog()", 5000);
+                       _cdm_wd_vishist = new Array();
                } else {
-                       debug("counters container not found in reply");
+                       debug("not in CDM mode or watchdog disabled");
                }
-
-       } else {
-               debug("headlines_callback: returned no XML object");
-               f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML object)') + "</div>";
-       }
-
-       if (typeof correctPNG != 'undefined') {
-               correctPNG();
-       }
-
-       if (_cdm_wd_timeout) window.clearTimeout(_cdm_wd_timeout);
-
-       if (!document.getElementById("headlinesList") && 
-                       getInitParam("cdm_auto_catchup") == 1) {
-               debug("starting CDM watchdog");
-               _cdm_wd_timeout = window.setTimeout("cdmWatchdog()", 5000);
-               _cdm_wd_vishist = new Array();
-       } else {
-               debug("not in CDM mode or watchdog disabled");
-       }
-
-       if (_tag_cdm_scroll) {
-               try {
-                       document.getElementById("headlinesInnerContainer").scrollTop = _tag_cdm_scroll;
-                       _tag_cdm_scroll = false;
-                       debug("resetting headlinesInner scrollTop");
-
-               } catch (e) { }
+       
+               if (_tag_cdm_scroll) {
+                       try {
+                               document.getElementById("headlinesInnerContainer").scrollTop = _tag_cdm_scroll;
+                               _tag_cdm_scroll = false;
+                               debug("resetting headlinesInner scrollTop");
+       
+                       } catch (e) { }
+               }
+       
+               _feed_cur_page = feed_cur_page;
+       
+               notify("");
+       } catch (e) {
+               exception_error("headlines_callback2", e);
        }
-
-       _feed_cur_page = feed_cur_page;
-
-       notify("");
 }
 
 function render_article(article) {