From d129c61a4aab6f5c713f5f6b48da1f2ada036f22 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 25 Mar 2016 11:23:31 -0400 Subject: [PATCH] FIX: Badge loading more was stuck --- .../discourse/controllers/badges/show.js.es6 | 22 ++++++++----------- .../discourse/mixins/load-more.js.es6 | 4 ++-- .../discourse/views/badges-show.js.es6 | 2 +- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/badges/show.js.es6 b/app/assets/javascripts/discourse/controllers/badges/show.js.es6 index 54be27a6651..1af975fcdac 100644 --- a/app/assets/javascripts/discourse/controllers/badges/show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/badges/show.js.es6 @@ -1,4 +1,5 @@ import UserBadge from 'discourse/models/user-badge'; +import computed from 'ember-addons/ember-computed-decorators'; export default Ember.Controller.extend({ queryParams: ['username'], @@ -22,30 +23,25 @@ export default Ember.Controller.extend({ actions: { loadMore() { - const self = this; const userBadges = this.get('userBadges'); UserBadge.findByBadgeId(this.get('model.id'), { offset: userBadges.length, username: this.get('username'), - }).then(function(result) { + }).then(result => { userBadges.pushObjects(result); - if(userBadges.length === 0){ - self.set('noMoreBadges', true); + if (userBadges.length === 0){ + this.set('noMoreBadges', true); } }); } }, - canLoadMore: function() { - if (this.get('noMoreBadges')) { return false; } - - if (this.get('userBadges')) { - return this.get('grantCount') > this.get('userBadges.length'); - } else { - return false; - } - }.property('noMoreBadges', 'model.grant_count', 'userBadges.length'), + @computed('noMoreBadges', 'model.grant_count', 'userBadges.length') + canLoadMore(noMoreBadges, grantCount, userBadgeLength) { + if (noMoreBadges) { return false; } + return grantCount > (userBadgeLength || 0); + }, _showFooter: function() { this.set("controllers.application.showFooter", !this.get("canLoadMore")); diff --git a/app/assets/javascripts/discourse/mixins/load-more.js.es6 b/app/assets/javascripts/discourse/mixins/load-more.js.es6 index 415c43b5e29..c422e1cd633 100644 --- a/app/assets/javascripts/discourse/mixins/load-more.js.es6 +++ b/app/assets/javascripts/discourse/mixins/load-more.js.es6 @@ -2,12 +2,12 @@ import Eyeline from 'discourse/lib/eyeline'; import Scrolling from 'discourse/mixins/scrolling'; import { on } from 'ember-addons/ember-computed-decorators'; -// Provides the ability to load more items for a view which is scrolled to the bottom. +// Provides the ability to load more items for a view which is scrolled to the bottom. export default Ember.Mixin.create(Ember.ViewTargetActionSupport, Scrolling, { scrolled() { const eyeline = this.get('eyeline'); - if (eyeline) { eyeline.update(); } + return eyeline && eyeline.update(); }, loadMoreUnlessFull() { diff --git a/app/assets/javascripts/discourse/views/badges-show.js.es6 b/app/assets/javascripts/discourse/views/badges-show.js.es6 index 9f94ae6a3ad..2aae5f7675a 100644 --- a/app/assets/javascripts/discourse/views/badges-show.js.es6 +++ b/app/assets/javascripts/discourse/views/badges-show.js.es6 @@ -1,7 +1,7 @@ import LoadMore from "discourse/mixins/load-more"; export default Ember.View.extend(LoadMore, { - eyelineSelector: '.badge-user', + eyelineSelector: '.badge-info', tickOrX: function(field){ var icon = this.get('controller.model.' + field) ? "fa-check" : "fa-times"; return "";