From a95e14fb4c0f73291cd15cad20becb262378a9d7 Mon Sep 17 00:00:00 2001 From: Matt Haley Date: Thu, 13 Jun 2013 22:39:26 -0700 Subject: Load selected feed after a short timeout Avoid firing multiple server requests if the user is navigating up/down the tree list with the keyboard. Instead, wait till the user has stopped navigating for at least 250ms. --- js/feedlist.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'js/feedlist.js') diff --git a/js/feedlist.js b/js/feedlist.js index 84b561227..222fbcbe0 100644 --- a/js/feedlist.js +++ b/js/feedlist.js @@ -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; @@ -52,7 +53,7 @@ function loadMoreHeadlines() { } -function viewfeed(feed, method, is_cat, offset, background, infscroll_req) { +function viewfeed(feed, method, is_cat, offset, background, infscroll_req, can_wait) { try { if (is_cat == undefined) is_cat = false; @@ -132,15 +133,24 @@ function viewfeed(feed, method, is_cat, offset, background, infscroll_req) { console.log(query); + if (can_wait && _viewfeed_timeout) { + setFeedExpandoIcon(getActiveFeedId(), activeFeedIsCat(), 'images/blank_icon.gif'); + clearTimeout(_viewfeed_timeout); + } + setActiveFeedId(feed, is_cat); - 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]); - } }); + timeout_ms = can_wait ? 250 : 0; + _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]); + } }); + }, timeout_ms); // Wait 250ms } catch (e) { exception_error("viewfeed", e); -- cgit v1.2.3-54-g00ecf From d9e78984fb3977e268a09fdcc485689c04ee5688 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 12 Jul 2013 14:15:03 +0400 Subject: viewfeed: properly escape feed in ajax query --- js/feedlist.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js/feedlist.js') diff --git a/js/feedlist.js b/js/feedlist.js index 222fbcbe0..7f60194dc 100644 --- a/js/feedlist.js +++ b/js/feedlist.js @@ -95,7 +95,7 @@ function viewfeed(feed, method, is_cat, offset, background, infscroll_req, can_w var toolbar_query = Form.serialize("main_toolbar_form"); - var query = "?op=feeds&method=view&feed=" + feed + "&" + + var query = "?op=feeds&method=view&feed=" + param_escape(feed) + "&" + toolbar_query; if (method) { -- cgit v1.2.3-54-g00ecf From 07734eee5aef3b9641e752e908506cd2734d36f7 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 1 Sep 2013 14:07:31 +0400 Subject: loadMoreHeadlines: use shorter syntax for adaptive offset calculation --- js/feedlist.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'js/feedlist.js') diff --git a/js/feedlist.js b/js/feedlist.js index 7f60194dc..7c2e08052 100644 --- a/js/feedlist.js +++ b/js/feedlist.js @@ -35,10 +35,7 @@ function loadMoreHeadlines() { } else if (_search_query) { offset = num_all; } else if (view_mode == "adaptive") { - if (num_unread > 0) - offset = unread_in_buffer; - else - offset = num_all; + offset = num_unread > 0 ? unread_in_buffer : num_all; } else { offset = num_all; } -- cgit v1.2.3-54-g00ecf