Use PreloadStore for the badge pages.

This commit is contained in:
Vikhyat Korrapati 2014-04-26 00:28:41 +05:30
parent b4e037dfb2
commit a8e2c5e616
3 changed files with 32 additions and 4 deletions

View File

@ -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();
}
}
});

View File

@ -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) {

View File

@ -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