diff --git a/app/assets/javascripts/discourse/mixins/load-more.js.es6 b/app/assets/javascripts/discourse/mixins/load-more.js.es6 index 69a7534f705..415c43b5e29 100644 --- a/app/assets/javascripts/discourse/mixins/load-more.js.es6 +++ b/app/assets/javascripts/discourse/mixins/load-more.js.es6 @@ -10,6 +10,12 @@ export default Ember.Mixin.create(Ember.ViewTargetActionSupport, Scrolling, { if (eyeline) { eyeline.update(); } }, + loadMoreUnlessFull() { + if (this.screenNotFull()) { + this.send("loadMore"); + } + }, + @on("didInsertElement") _bindEyeline() { const eyeline = new Eyeline(this.get('eyelineSelector') + ":last"); diff --git a/app/assets/javascripts/discourse/mixins/scrolling.js.es6 b/app/assets/javascripts/discourse/mixins/scrolling.js.es6 index b9f75d3df10..e25af304e46 100644 --- a/app/assets/javascripts/discourse/mixins/scrolling.js.es6 +++ b/app/assets/javascripts/discourse/mixins/scrolling.js.es6 @@ -16,6 +16,10 @@ const ScrollingDOMMethods = { name = name || 'default'; $(window).unbind(`scroll.discourse-${name}`); $(document).unbind(`touchmove.discourse-${name}`); + }, + + screenNotFull() { + return $(window).height() >= $(document).height(); } }; @@ -41,6 +45,8 @@ const Scrolling = Ember.Mixin.create({ ScrollingDOMMethods.bindOnScroll(onScrollMethod, opts.name); }, + screenNotFull: () => ScrollingDOMMethods.screenNotFull(), + unbindScrolling(name) { ScrollingDOMMethods.unbindOnScroll(name); } diff --git a/app/assets/javascripts/discourse/views/discovery-topics.js.es6 b/app/assets/javascripts/discourse/views/discovery-topics.js.es6 index 7a7665d70c4..ac6e897d607 100644 --- a/app/assets/javascripts/discourse/views/discovery-topics.js.es6 +++ b/app/assets/javascripts/discourse/views/discovery-topics.js.es6 @@ -26,8 +26,8 @@ export default Ember.View.extend(LoadMore, UrlRefresh, { const scrollTo = this.session.get('topicListScrollPosition'); if (scrollTo && scrollTo >= 0) { Ember.run.schedule('afterRender', () => $(window).scrollTop(scrollTo + 1)); - } else if ($(window).height() >= $(document).height()) { - this.send("loadMore"); + } else { + this.loadMoreUnlessFull(); } }, diff --git a/test/javascripts/test_helper.js b/test/javascripts/test_helper.js index 08de7fdce37..5b9a489e06b 100644 --- a/test/javascripts/test_helper.js +++ b/test/javascripts/test_helper.js @@ -105,6 +105,7 @@ QUnit.testStart(function(ctx) { PreloadStore.reset(); window.sandbox = sinon.sandbox.create(); + window.sandbox.stub(ScrollingDOMMethods, "screenNotFull"); window.sandbox.stub(ScrollingDOMMethods, "bindOnScroll"); window.sandbox.stub(ScrollingDOMMethods, "unbindOnScroll");