]> git.wh0rd.org - tt-rss.git/commitdiff
Load selected feed after a short timeout
authorMatt Haley <matt@smajnr.net>
Wed, 12 Jun 2013 04:54:32 +0000 (22:54 -0600)
committerMatt Haley <matt@smajnr.net>
Wed, 12 Jun 2013 04:54:32 +0000 (22:54 -0600)
Avoid firing multiple server requests if the user quickly clicks another feed or is navigating up/down the tree list with the keyboard.

js/feedlist.js

index 84b561227578c82b6b62dafb782c61a6520331e7..d3418176b00fc883d3cbee5968094c51fbf41e91 100644 (file)
@@ -2,6 +2,7 @@ var _infscroll_disable = 0;
 var _infscroll_request_sent = 0;
 var _search_query = false;
 var _viewfeed_last = 0;
+var _viewfeed_timeout = false;
 
 var counters_last_request = 0;
 
@@ -132,15 +133,21 @@ function viewfeed(feed, method, is_cat, offset, background, infscroll_req) {
 
                console.log(query);
 
+               if (_viewfeed_timeout) {
+                       setFeedExpandoIcon(getActiveFeedId(), activeFeedIsCat(), 'images/blank_icon.gif');
+                       clearTimeout(_viewfeed_timeout);
+               }
                setActiveFeedId(feed, is_cat);
 
+               _viewfeed_timeout = setTimeout(function()) {
                new Ajax.Request("backend.php", {
-                       parameters: query,
-                       onComplete: function(transport) {
-                               setFeedExpandoIcon(feed, is_cat, 'images/blank_icon.gif');
-                               headlines_callback2(transport, offset, background, infscroll_req);
-                               PluginHost.run(PluginHost.HOOK_FEED_LOADED, [feed, is_cat]);
-                       } });
+                               parameters: query,
+                               onComplete: function(transport) {
+                                       setFeedExpandoIcon(feed, is_cat, 'images/blank_icon.gif');
+                                       headlines_callback2(transport, offset, background, infscroll_req);
+                                       PluginHost.run(PluginHost.HOOK_FEED_LOADED, [feed, is_cat]);
+                               } });
+               }, 250); // 250ms delay
 
        } catch (e) {
                exception_error("viewfeed", e);