aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2016-06-30 11:10:48 +0200
committerVincent Petry <pvince81@owncloud.com>2016-06-30 11:10:48 +0200
commitdc3555409141ee0667e639fd26ace8844c225489 (patch)
treedc592bb53870475afc74fb1d7dc9662adaeb8ab0
parente67615ef0cfba880d1c0ed151f57d78e0fe92dd3 (diff)
downloadnextcloud-server-dc3555409141ee0667e639fd26ace8844c225489.tar.gz
nextcloud-server-dc3555409141ee0667e639fd26ace8844c225489.zip
Prevent infinite loop in search auto-nextpage
When loading the next page of search results, make sure that the loop can end if there are no more elements in case the total doesn't match. Also added a check to avoid recomputing the search results whenever the setFilter() is called with the same value. This happens when navigating away to another folder, the search field gets cleared automatically and it calls FileList.setFilter('').
-rw-r--r--apps/files/js/filelist.js7
1 files changed, 5 insertions, 2 deletions
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 18f17a7207c..690e5e70fdb 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -2352,13 +2352,16 @@
*/
setFilter:function(filter) {
var total = 0;
+ if (this._filter === filter) {
+ return;
+ }
this._filter = filter;
this.fileSummary.setFilter(filter, this.files);
total = this.fileSummary.getTotal();
if (!this.$el.find('.mask').exists()) {
this.hideIrrelevantUIWhenNoFilesMatch();
}
- var that = this;
+
var visibleCount = 0;
filter = filter.toLowerCase();
@@ -2378,7 +2381,7 @@
if (visibleCount < total) {
$trs = this._nextPage(false);
}
- } while (visibleCount < total);
+ } while (visibleCount < total && $trs.length > 0);
this.$container.trigger('scroll');
},