]> git.wh0rd.org - tt-rss.git/blobdiff - viewfeed.js
check for backend-returned fatal errors in major callbacks
[tt-rss.git] / viewfeed.js
index 391e84bd989cb4477e3df7e532ec31614510260b..0f5345b9bfdd44ea16998bfb4f7b3d3c3f47d958 100644 (file)
@@ -2,13 +2,6 @@ var active_post_id = false;
 var last_article_view = false;
 var active_real_feed_id = false;
 
-var _tag_active_post_id = false;
-var _tag_active_feed_id = false;
-var _tag_active_cdm = false;
-
-// FIXME: kludge, to restore scrollTop after tag editor terminates
-var _tag_cdm_scroll = false;
-
 // FIXME: kludges, needs proper implementation
 var _reload_feedlist_after_view = false;
 
@@ -46,7 +39,7 @@ function catchup_callback2(transport, callback) {
                        setTimeout(callback, 10);       
                }
        } catch (e) {
-               exception_error("catchup_callback2", e);
+               exception_error("catchup_callback2", e, transport);
        }
 }
 
@@ -74,6 +67,8 @@ function headlines_callback2(transport, feed_cur_page) {
 
                debug("headlines_callback2 [page=" + feed_cur_page + "]");
 
+               if (!transport_error_check(transport)) return;
+
                clean_feed_selections();
        
                var is_cat = false;
@@ -233,15 +228,6 @@ function headlines_callback2(transport, feed_cur_page) {
                        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) { }
-               }
-       
                _feed_cur_page = feed_cur_page;
                _infscroll_request_sent = 0;
 
@@ -250,7 +236,7 @@ function headlines_callback2(transport, feed_cur_page) {
                remove_splash();
 
        } catch (e) {
-               exception_error("headlines_callback2", e);
+               exception_error("headlines_callback2", e, transport);
        }
 }
 
@@ -306,7 +292,7 @@ function showArticleInHeadlines(id) {
                        view_mode = document.forms['main_toolbar_form'].view_mode;      
                        view_mode = view_mode[view_mode.selectedIndex].value;
                } catch (e) {
-                       exception_error("showArticleInHeadlines/viewmode", e, true);
+                       //
                }
 
                if (upd_img_pic && upd_img_pic.src.match("updated.png")) {
@@ -343,6 +329,8 @@ function article_callback2(transport, id, feed_id) {
 
                if (transport.responseXML) {
 
+                       if (!transport_error_check(transport)) return;
+
                        debug("looking for articles to cache...");
 
                        var articles = transport.responseXML.getElementsByTagName("article");
@@ -402,7 +390,7 @@ function article_callback2(transport, id, feed_id) {
 
                notify("");
        } catch (e) {
-               exception_error("article_callback2", e);
+               exception_error("article_callback2", e, transport);
        }
 }
 
@@ -551,6 +539,9 @@ function toggleMark(id, client_only, no_effects) {
                }
        
                var mark_img = document.getElementById("FMPIC-" + id);
+
+               if (!mark_img) return;
+
                var vfeedu = document.getElementById("FEEDU--1");
                var crow = document.getElementById("RROW-" + id);
        
@@ -602,6 +593,9 @@ function togglePub(id, client_only, no_effects) {
                }
        
                var mark_img = document.getElementById("FPPIC-" + id);
+
+               if (!mark_img) return;
+
                var vfeedu = document.getElementById("FEEDU--2");
                var crow = document.getElementById("RROW-" + id);
        
@@ -858,9 +852,9 @@ function selectionRemoveLabel(id) {
                        return;
                }
 
-               var ok = confirm(__("Remove selected articles from label?"));
+//             var ok = confirm(__("Remove selected articles from label?"));
 
-               if (ok) {
+//             if (ok) {
 
                        var query = "backend.php?op=rpc&subop=removeFromLabel&ids=" +
                                param_escape(ids.toString()) + "&lid=" + param_escape(id);
@@ -875,7 +869,7 @@ function selectionRemoveLabel(id) {
                                        all_counters_callback2(transport);
                                } });
 
-               }
+//             }
 
        } catch (e) {
                exception_error("selectionAssignLabel", e);
@@ -893,9 +887,9 @@ function selectionAssignLabel(id) {
                        return;
                }
 
-               var ok = confirm(__("Assign selected articles to label?"));
+//             var ok = confirm(__("Assign selected articles to label?"));
 
-               if (ok) {
+//             if (ok) {
 
                        cache_invalidate("F:" + (-11 - id));
 
@@ -910,7 +904,7 @@ function selectionAssignLabel(id) {
                                        all_counters_callback2(transport);
                                } });
 
-               }
+//             }
 
        } catch (e) {
                exception_error("selectionAssignLabel", e);
@@ -1228,15 +1222,6 @@ function catchupSelection() {
 }
 
 function editArticleTags(id, feed_id, cdm_enabled) {
-       _tag_active_post_id = id;
-       _tag_active_feed_id = feed_id;
-       _tag_active_cdm = cdm_enabled;
-
-       cache_invalidate(id);
-
-       try {
-               _tag_cdm_scroll = document.getElementById("headlinesInnerContainer").scrollTop;
-       } catch (e) { }
        displayDlg('editArticleTags', id);
 }
 
@@ -1252,18 +1237,24 @@ function tag_saved_callback(transport) {
                        _reload_feedlist_after_view = true;
                }
 
-               if (!_tag_active_cdm) {
-                       if (active_post_id == _tag_active_post_id) {
-                               debug("reloading current article");
-                               view(_tag_active_post_id, _tag_active_feed_id);                 
+
+               if (transport.responseXML) {
+                       var tags_str = transport.responseXML.getElementsByTagName("tags-str")[0];
+                       
+                       if (tags_str) {
+                               var id = tags_str.getAttribute("id");
+
+                               if (id) {
+                                       var tags = document.getElementById("ATSTR-" + id);
+                                       if (tags) {
+                                               tags.innerHTML = tags_str.firstChild.nodeValue;
+                                       }
+                               }
                        }
-               } else {
-                       debug("reloading current feed");
-                       viewCurrentFeed();
                }
 
        } catch (e) {
-               exception_error("catchup_callback", e);
+               exception_error("tag_saved_callback", e);
        }
 }