From a8e2c5e616513a902bc165316afe2e996e6feaf6 Mon Sep 17 00:00:00 2001 From: Vikhyat Korrapati Date: Sat, 26 Apr 2014 00:28:41 +0530 Subject: [PATCH] Use PreloadStore for the badge pages. --- .../discourse/routes/badges_index_route.js | 8 +++++++- .../discourse/routes/badges_show_route.js | 8 +++++++- app/controllers/badges_controller.rb | 20 +++++++++++++++++-- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/routes/badges_index_route.js b/app/assets/javascripts/discourse/routes/badges_index_route.js index 6563af0d777..520677d24ee 100644 --- a/app/assets/javascripts/discourse/routes/badges_index_route.js +++ b/app/assets/javascripts/discourse/routes/badges_index_route.js @@ -8,6 +8,12 @@ **/ Discourse.BadgesIndexRoute = Discourse.Route.extend({ model: function() { - return Discourse.Badge.findAll(); + if (PreloadStore.get('badges')) { + return PreloadStore.getAndRemove('badges').then(function(json) { + return Discourse.Badge.createFromJson(json); + }); + } else { + return Discourse.Badge.findAll(); + } } }); diff --git a/app/assets/javascripts/discourse/routes/badges_show_route.js b/app/assets/javascripts/discourse/routes/badges_show_route.js index 0db79c9df85..a4c4cc83180 100644 --- a/app/assets/javascripts/discourse/routes/badges_show_route.js +++ b/app/assets/javascripts/discourse/routes/badges_show_route.js @@ -12,7 +12,13 @@ Discourse.BadgesShowRoute = Ember.Route.extend({ }, model: function(params) { - return Discourse.Badge.findById(params.id); + if (PreloadStore.get('badge')) { + return PreloadStore.getAndRemove('badge').then(function(json) { + return Discourse.Badge.createFromJson(json); + }); + } else { + return Discourse.Badge.findById(params.id); + } }, setupController: function(controller, model) { diff --git a/app/controllers/badges_controller.rb b/app/controllers/badges_controller.rb index a8908afd4f8..03f825c5f42 100644 --- a/app/controllers/badges_controller.rb +++ b/app/controllers/badges_controller.rb @@ -1,12 +1,28 @@ class BadgesController < ApplicationController + skip_before_filter :check_xhr, only: [:index, :show] + def index badges = Badge.all.to_a - render_serialized(badges, BadgeSerializer, root: "badges") + serialized = MultiJson.dump(serialize_data(badges, BadgeSerializer, root: "badges")) + respond_to do |format| + format.html do + store_preloaded "badges", serialized + render "default/empty" + end + format.json { render json: serialized } + end end def show params.require(:id) badge = Badge.find(params[:id]) - render_serialized(badge, BadgeSerializer, root: "badge") + serialized = MultiJson.dump(serialize_data(badge, BadgeSerializer, root: "badge")) + respond_to do |format| + format.html do + store_preloaded "badge", serialized + render "default/empty" + end + format.json { render json: serialized } + end end end