]> git.wh0rd.org Git - tt-rss.git/commitdiff
sort feeds list by unread; support fatal error messages and login redirects
authorAndrew Dolgov <fox@bah.org.ru>
Sun, 12 Sep 2010 06:15:40 +0000 (10:15 +0400)
committerAndrew Dolgov <fox@bah.org.ru>
Sun, 12 Sep 2010 06:15:40 +0000 (10:15 +0400)
digest.js

index 38e2224bb1c8235e7c3a183538753f458be76a30..fffdf16ea9fdc3ec2ad3e406e8cb64d4bffd1287 100644 (file)
--- a/digest.js
+++ b/digest.js
@@ -79,6 +79,7 @@ function update() {
                new Ajax.Request("backend.php", {
                        parameters: "?op=rpc&subop=digest-init",
                        onComplete: function(transport) {
+                               fatal_error_check(transport);
                                parse_feeds(transport);
                                set_selected_feed(_active_feed_id);
                                } });
@@ -132,6 +133,7 @@ function viewfeed(feed_id, offset) {
                new Ajax.Request("backend.php", {
                        parameters: query, 
                        onComplete: function(transport) {
+                               fatal_error_check(transport);
                                parse_headlines(transport, offset == 0);
                                set_selected_feed(feed_id);
                                _active_feed_offset = offset;
@@ -258,6 +260,19 @@ function parse_feeds(transport) {
                if (feeds) {
                        feeds = eval("(" + feeds.firstChild.nodeValue + ")");
 
+                       feeds.sort( function (a,b) 
+                               { 
+                                       if (b.unread != a.unread)
+                                               return (b.unread - a.unread) 
+                                       else
+                                               if (a.title > b.title)
+                                                       return 1;
+                                               else if (a.title < b.title)
+                                                       return -1;
+                                               else
+                                                       return 0;                                       
+                               });
+
                        last_feeds = feeds;
 
                        $('feeds-content').innerHTML = "";
@@ -499,3 +514,45 @@ function togglePub(mark_img, id, note) {
        }
 }
 
+function fatal_error(code, msg) {
+       try {   
+
+               if (code == 6) {
+                       window.location.href = "digest.php";
+               } else if (code == 5) {
+                       window.location.href = "update.php";
+               } else {
+       
+                       if (msg == "") msg = "Unknown error";
+
+                       console.error("Fatal error: " + code + "\n" + 
+                               msg);
+                       
+               }
+
+       } catch (e) {
+               exception_error("fatalError", e);
+       }
+}
+
+function fatal_error_check(transport) {
+       try {
+               if (transport.responseXML) {
+                       var error = transport.responseXML.getElementsByTagName("error")[0];
+
+                       if (error) {
+                               var code = error.getAttribute("error-code");
+                               var msg = error.getAttribute("error-msg");
+                               if (code != 0) {
+                                       fatal_error(code, msg);
+                                       return false;
+                               }
+                       }
+               }
+       } catch (e) {
+               exception_error("fatal_error_check", e);
+       }
+       return true;
+}
+
+