From 8a8c14c6f7f74819bb5c58b34fdb44ce66ef134f Mon Sep 17 00:00:00 2001 From: ckeboss Date: Tue, 7 Nov 2017 17:04:21 -0800 Subject: [PATCH] Fix infinate loading of group posts (#5296) --- .../controllers/group-activity-posts.js.es6 | 13 +++++++++++++ .../discourse/routes/group-activity-posts.js.es6 | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/controllers/group-activity-posts.js.es6 b/app/assets/javascripts/discourse/controllers/group-activity-posts.js.es6 index 991ce0b0143..be2dc575f08 100644 --- a/app/assets/javascripts/discourse/controllers/group-activity-posts.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-activity-posts.js.es6 @@ -1,13 +1,17 @@ +import { default as computed, observes } from 'ember-addons/ember-computed-decorators'; import { fmt } from 'discourse/lib/computed'; export default Ember.Controller.extend({ group: Ember.inject.controller(), groupActivity: Ember.inject.controller(), + application: Ember.inject.controller(), + canLoadMore: true, loading: false, emptyText: fmt('type', 'groups.empty.%@'), actions: { loadMore() { + if (!this.get('canLoadMore')) { return; } if (this.get('loading')) { return; } this.set('loading', true); const posts = this.get('model'); @@ -20,9 +24,18 @@ export default Ember.Controller.extend({ group.findPosts(opts).then(newPosts => { posts.addObjects(newPosts); + if(newPosts.length === 0) { + this.set('canLoadMore', false); + } + }).finally(() => { this.set('loading', false); }); } } + }, + + @observes('canLoadMore') + _showFooter() { + this.set("application.showFooter", !this.get("canLoadMore")); } }); diff --git a/app/assets/javascripts/discourse/routes/group-activity-posts.js.es6 b/app/assets/javascripts/discourse/routes/group-activity-posts.js.es6 index 1127d36f97f..827c8c468b6 100644 --- a/app/assets/javascripts/discourse/routes/group-activity-posts.js.es6 +++ b/app/assets/javascripts/discourse/routes/group-activity-posts.js.es6 @@ -12,7 +12,7 @@ export function buildGroupPage(type) { }, setupController(controller, model) { - this.controllerFor('group-activity-posts').setProperties({ model, type }); + this.controllerFor('group-activity-posts').setProperties({ model, type, canLoadMore: true }); this.controllerFor("group").set("showing", type); },