diff --git a/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 b/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 index 544684c1950..9d3a7f29287 100644 --- a/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 @@ -50,6 +50,8 @@ var controllerOpts = { // Lesson learned: Don't call `loading` yourself. this.set('controllers.discovery.loading', true); Discourse.TopicList.find(filter).then(function(list) { + Discourse.TopicList.hideUniformCategory(list, self.get('category')); + self.setProperties({ model: list, selected: [] }); var tracking = Discourse.TopicTrackingState.current(); diff --git a/app/assets/javascripts/discourse/models/topic_list.js b/app/assets/javascripts/discourse/models/topic_list.js index 4d70739bd67..01e3f12697c 100644 --- a/app/assets/javascripts/discourse/models/topic_list.js +++ b/app/assets/javascripts/discourse/models/topic_list.js @@ -1,12 +1,3 @@ -/** - A data model representing a list of topics - - @class TopicList - @extends Discourse.Model - @namespace Discourse - @module Discourse -**/ - function finderFor(filter, params) { return function() { var url = Discourse.getURL("/") + filter + ".json"; @@ -264,6 +255,12 @@ Discourse.TopicList.reopenClass({ return PreloadStore.getAndRemove("topic_list_" + filter, finderFor(filter, params)).then(function(result) { return Discourse.TopicList.from(result, filter, params); }); + }, + + // Sets `hideCategory` if all topics in the last have a particular category + hideUniformCategory: function(list, category) { + var hideCategory = !list.get('topics').any(function (t) { return t.get('category') !== category; }); + list.set('hideCategory', hideCategory); } }); diff --git a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 index 2cbef30cf5c..ae70acd7d6d 100644 --- a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 @@ -54,9 +54,7 @@ export default function(filter, params) { extras = { cached: this.isPoppedState(transition) }; return Discourse.TopicList.list(listFilter, findOpts, extras).then(function(list) { - // If all the categories are the same, we can hide them - var hideCategory = !list.get('topics').find(function (t) { return t.get('category') !== model; }); - list.set('hideCategory', hideCategory); + Discourse.TopicList.hideUniformCategory(list, model); self.set('topics', list); }); },