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/mixins/grant-badge-controller.js.es6
Kyle Zhao 83c549bd31 FEATURE: grant badges in post admin wrench (#5498)
* FEATURE: grant badges in post admin wrench

* only grant manually grantable badges

* extract GrantBadgeController mixin
2018-01-22 14:10:53 +11:00

39 lines
1.2 KiB
JavaScript

import computed from "ember-addons/ember-computed-decorators";
import UserBadge from 'discourse/models/user-badge';
export default Ember.Mixin.create({
@computed('allBadges.[]', 'userBadges.[]')
grantableBadges(allBadges, userBadges) {
const granted = userBadges.reduce((map, badge) => {
map[badge.get('badge_id')] = true;
return map;
}, {});
return allBadges
.filter(badge => {
return badge.get('enabled')
&& badge.get('manually_grantable')
&& (!granted[badge.get('id')] || badge.get('multiple_grant'));
})
.sort((a, b) => a.get('name').localeCompare(b.get('name')));
},
noGrantableBadges: Ember.computed.empty('grantableBadges'),
@computed('selectedBadgeId', 'grantableBadges')
selectedBadgeGrantable(selectedBadgeId, grantableBadges) {
return grantableBadges && grantableBadges.find(badge => badge.get('id') === selectedBadgeId);
},
grantBadge(selectedBadgeId, username, badgeReason) {
return UserBadge.grant(selectedBadgeId, username, badgeReason)
.then(newBadge => {
this.get('userBadges').pushObject(newBadge);
return newBadge;
}, error => {
throw error;
});
}
});