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/controllers/badges/show.js.es6
Bianca Nenciu ac8bc04ad7 Set user title from the badge view (#5049)
* title info under notification

* create badge-title as component

* display available titles, close button

* remove visual feedback when grant new badge

* Made changes after review.

* Some minor fixes.
2017-08-17 16:32:37 -04:00

77 lines
2.0 KiB
JavaScript

import UserBadge from 'discourse/models/user-badge';
import { default as computed, observes } from 'ember-addons/ember-computed-decorators';
import BadgeSelectController from "discourse/mixins/badge-select-controller";
export default Ember.Controller.extend(BadgeSelectController, {
queryParams: ['username'],
noMoreBadges: false,
userBadges: null,
application: Ember.inject.controller(),
hiddenSetTitle: true,
filteredList: function() {
return this.get('userBadgesAll').filterBy('badge.allow_title', true);
}.property('userBadgesAll'),
@computed('username')
user(username) {
if (username) {
return this.get('userBadges')[0].get('user');
}
},
@computed('username', 'model.grant_count', 'userBadges.grant_count')
grantCount(username, modelCount, userCount) {
return username ? userCount : modelCount;
},
@computed("model.has_title_badges")
canSelectTitle(hasTitleBadges) {
return this.siteSettings.enable_badges && hasTitleBadges;
},
actions: {
loadMore() {
if (this.get('loadingMore')) {
return;
}
this.set('loadingMore', true);
const userBadges = this.get('userBadges');
UserBadge.findByBadgeId(this.get('model.id'), {
offset: userBadges.length,
username: this.get('username'),
}).then(result => {
userBadges.pushObjects(result);
if (userBadges.length === 0){
this.set('noMoreBadges', true);
}
}).finally(()=>{
this.set('loadingMore', false);
});
},
toggleSetUserTitle() {
return this.toggleProperty('hiddenSetTitle');
}
},
@computed('noMoreBadges', 'grantCount', 'userBadges.length')
canLoadMore(noMoreBadges, grantCount, userBadgeLength) {
if (noMoreBadges) { return false; }
return grantCount > (userBadgeLength || 0);
},
@computed('user', 'model.grant_count')
canShowOthers(user, grantCount) {
return !!user && grantCount > 1;
},
@observes('canLoadMore')
_showFooter() {
this.set("application.showFooter", !this.get("canLoadMore"));
}
});