diff --git a/app/assets/javascripts/discourse/controllers/discovery_categories_controller.js b/app/assets/javascripts/discourse/controllers/discovery_categories_controller.js index 4779a53c9b6..6861e1840c6 100644 --- a/app/assets/javascripts/discourse/controllers/discovery_categories_controller.js +++ b/app/assets/javascripts/discourse/controllers/discovery_categories_controller.js @@ -7,7 +7,7 @@ @module Discourse **/ Discourse.DiscoveryCategoriesController = Discourse.DiscoveryController.extend({ - needs: ['modal'], + needs: ['modal', 'discovery'], actions: { toggleOrdering: function(){ @@ -16,6 +16,10 @@ Discourse.DiscoveryCategoriesController = Discourse.DiscoveryController.extend({ refresh: function() { var self = this; + + // Don't refresh if we're still loading + if (this.get('controllers.discovery.loading')) { return; } + this.send('loading'); Discourse.CategoryList.list('categories').then(function(list) { self.set('model', list); diff --git a/app/assets/javascripts/discourse/controllers/discovery_top_controller.js b/app/assets/javascripts/discourse/controllers/discovery_top_controller.js index 37366cc062c..58554c939f4 100644 --- a/app/assets/javascripts/discourse/controllers/discovery_top_controller.js +++ b/app/assets/javascripts/discourse/controllers/discovery_top_controller.js @@ -7,10 +7,15 @@ @module Discourse **/ Discourse.DiscoveryTopController = Discourse.DiscoveryController.extend({ + needs: ['discovery'], actions: { refresh: function() { var self = this; + + // Don't refresh if we're still loading + if (this.get('controllers.discovery.loading')) { return; } + this.send('loading'); Discourse.TopList.find().then(function(top_lists) { self.set('model', top_lists); diff --git a/app/assets/javascripts/discourse/controllers/discovery_topics_controller.js b/app/assets/javascripts/discourse/controllers/discovery_topics_controller.js index 3f9e8b5001f..c3eaf465d5c 100644 --- a/app/assets/javascripts/discourse/controllers/discovery_topics_controller.js +++ b/app/assets/javascripts/discourse/controllers/discovery_topics_controller.js @@ -7,6 +7,7 @@ @module Discourse **/ Discourse.DiscoveryTopicsController = Discourse.DiscoveryController.extend({ + needs: ['discovery'], bulkSelectEnabled: false, selected: [], @@ -25,6 +26,9 @@ Discourse.DiscoveryTopicsController = Discourse.DiscoveryController.extend({ var filter = this.get('model.filter'), self = this; + // Don't refresh if we're still loading + if (this.get('controllers.discovery.loading')) { return; } + this.send('loading'); Discourse.TopicList.find(filter).then(function(list) { self.setProperties({ model: list, selected: [] }); diff --git a/app/assets/javascripts/discourse/routes/discovery_route.js b/app/assets/javascripts/discourse/routes/discovery_route.js index e903ffdf749..1f825cfb6f0 100644 --- a/app/assets/javascripts/discourse/routes/discovery_route.js +++ b/app/assets/javascripts/discourse/routes/discovery_route.js @@ -11,17 +11,20 @@ Discourse.DiscoveryRoute = Discourse.Route.extend(Discourse.OpenComposer, { actions: { loading: function() { var controller = this.controllerFor('discovery'); - + + // If we're already loading don't do anything + if (controller.get('loading')) { return; } + + controller.set('loading', true); controller.set('scheduledSpinner', Ember.run.later(controller, function() { - this.set('loading', true); + this.set('loadingSpinner', true); },500)); }, loadingComplete: function() { var controller = this.controllerFor('discovery'); - Ember.run.cancel(controller.get('scheduledSpinner')); - controller.set('loading', false); + controller.setProperties({ loading: false, loadingSpinner: false }); }, didTransition: function() { diff --git a/app/assets/javascripts/discourse/templates/discovery.js.handlebars b/app/assets/javascripts/discourse/templates/discovery.js.handlebars index d77219fdc8a..d4f7a4df1cc 100644 --- a/app/assets/javascripts/discourse/templates/discovery.js.handlebars +++ b/app/assets/javascripts/discourse/templates/discovery.js.handlebars @@ -9,11 +9,11 @@ -
+
{{i18n loading}}
-
+