Instead of using a "discoveryLoading" action, return true so it can

bubble up itself.
This commit is contained in:
Robin Ward 2014-11-14 13:33:55 -05:00
parent 1d1978086c
commit 9cd3708b63
5 changed files with 11 additions and 11 deletions

View file

@ -13,7 +13,10 @@ export default DiscoveryController.extend({
// Don't refresh if we're still loading // Don't refresh if we're still loading
if (this.get('controllers.discovery.loading')) { return; } if (this.get('controllers.discovery.loading')) { return; }
this.send('discoveryLoading'); // If we `send('loading')` here, due to returning true it bubbles up to the
// router and ember throws an error due to missing `handlerInfos`.
// Lesson learned: Don't call `loading` yourself.
this.set('controllers.discovery.loading', true);
Discourse.CategoryList.list('categories').then(function(list) { Discourse.CategoryList.list('categories').then(function(list) {
self.set('model', list); self.set('model', list);
self.send('loadingComplete'); self.send('loadingComplete');

View file

@ -42,7 +42,10 @@ var controllerOpts = {
// Don't refresh if we're still loading // Don't refresh if we're still loading
if (this.get('controllers.discovery.loading')) { return; } if (this.get('controllers.discovery.loading')) { return; }
this.send('discoveryLoading'); // If we `send('loading')` here, due to returning true it bubbles up to the
// router and ember throws an error due to missing `handlerInfos`.
// Lesson learned: Don't call `loading` yourself.
this.set('controllers.discovery.loading', true);
Discourse.TopicList.find(filter).then(function(list) { Discourse.TopicList.find(filter).then(function(list) {
self.setProperties({ model: list, selected: [] }); self.setProperties({ model: list, selected: [] });

View file

@ -5,10 +5,6 @@ export default function(filter, params) {
return Discourse.Route.extend({ return Discourse.Route.extend({
queryParams: queryParams, queryParams: queryParams,
beforeModel: function(transition) {
transition.send('discoveryLoading');
},
model: function(modelParams) { model: function(modelParams) {
return Discourse.Category.findBySlug(modelParams.slug, modelParams.parentSlug); return Discourse.Category.findBySlug(modelParams.slug, modelParams.parentSlug);
}, },
@ -89,7 +85,6 @@ export default function(filter, params) {
}); });
this.controllerFor('search').set('searchContext', model.get('searchContext')); this.controllerFor('search').set('searchContext', model.get('searchContext'));
this.controllerFor('discovery').send('loadingComplete');
this.set('topics', null); this.set('topics', null);
this.openTopicDraft(topics); this.openTopicDraft(topics);

View file

@ -17,8 +17,7 @@ export default function(filter, extras) {
return Discourse.Route.extend({ return Discourse.Route.extend({
queryParams: queryParams, queryParams: queryParams,
beforeModel: function(transition) { beforeModel: function() {
transition.send('discoveryLoading');
this.controllerFor('navigation/default').set('filterMode', filter); this.controllerFor('navigation/default').set('filterMode', filter);
}, },
@ -61,7 +60,6 @@ export default function(filter, extras) {
this.openTopicDraft(model); this.openTopicDraft(model);
this.controllerFor('navigation/default').set('canCreateTopic', model.get('can_create_topic')); this.controllerFor('navigation/default').set('canCreateTopic', model.get('can_create_topic'));
this.controllerFor('discovery').send('loadingComplete');
}, },
renderTemplate: function() { renderTemplate: function() {

View file

@ -19,12 +19,13 @@ Discourse.DiscoveryRoute = Discourse.Route.extend(Discourse.ScrollTop, Discourse
}, },
actions: { actions: {
discoveryLoading: function() { loading: function() {
var controller = this.controllerFor('discovery'); var controller = this.controllerFor('discovery');
// If we're already loading don't do anything // If we're already loading don't do anything
if (controller.get('loading')) { return; } if (controller.get('loading')) { return; }
controller.set('loading', true); controller.set('loading', true);
return true;
}, },
loadingComplete: function() { loadingComplete: function() {