This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/routes/badges-show.js.es6
2019-03-20 14:43:25 +01:00

69 lines
1.5 KiB
JavaScript

import UserBadge from "discourse/models/user-badge";
import Badge from "discourse/models/badge";
import PreloadStore from "preload-store";
export default Discourse.Route.extend({
queryParams: {
username: {
refreshModel: true
}
},
actions: {
didTransition() {
this.controllerFor("badges/show")._showFooter();
return true;
}
},
serialize(model) {
return model.getProperties("id", "slug");
},
model(params) {
if (PreloadStore.get("badge")) {
return PreloadStore.getAndRemove("badge").then(json =>
Badge.createFromJson(json)
);
} else {
return Badge.findById(params.id);
}
},
afterModel(model, transition) {
const username =
transition.to.queryParams && transition.to.queryParams.username;
const userBadgesGrant = UserBadge.findByBadgeId(model.get("id"), {
username
}).then(userBadges => {
this.userBadgesGrant = userBadges;
});
const userBadgesAll = UserBadge.findByUsername(username).then(
userBadges => {
this.userBadgesAll = userBadges;
}
);
const promises = {
userBadgesGrant,
userBadgesAll
};
return Ember.RSVP.hash(promises);
},
titleToken() {
const model = this.modelFor("badges.show");
if (model) {
return model.get("name");
}
},
setupController(controller, model) {
controller.set("model", model);
controller.set("userBadges", this.userBadgesGrant);
controller.set("userBadgesAll", this.userBadgesAll);
}
});