From ac06c87b43505a0dd8f09da99e25cab5595abd99 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Fri, 18 Oct 2019 02:17:05 +0200 Subject: [PATCH] DEV: Remove badge-select-controller (#8207) * DEV: Remove badge-select-controller 1. The `selectableUserBadges` computed property of `badge-title` was being incorrectly overwritten, which triggered computed-property.override deprecation. 2. The `badge-select-controller` mixin contained properties that were used either by `badge-title` component or `badges/show` controller, but none were being used by both. This change moves properties where they belong, and removes the mixin. * Update app/assets/javascripts/discourse/controllers/badges/show.js.es6 Co-Authored-By: Robin Ward * Improve code brevity --- .../discourse/components/badge-title.js.es6 | 14 ++++++- .../discourse/controllers/badges/show.js.es6 | 14 ++++++- .../mixins/badge-select-controller.js.es6 | 39 ------------------- .../templates/components/badge-title.hbs | 2 +- 4 files changed, 25 insertions(+), 44 deletions(-) delete mode 100644 app/assets/javascripts/discourse/mixins/badge-select-controller.js.es6 diff --git a/app/assets/javascripts/discourse/components/badge-title.js.es6 b/app/assets/javascripts/discourse/components/badge-title.js.es6 index 117b1cc4904..10a7088bd11 100644 --- a/app/assets/javascripts/discourse/components/badge-title.js.es6 +++ b/app/assets/javascripts/discourse/components/badge-title.js.es6 @@ -1,12 +1,22 @@ import { ajax } from "discourse/lib/ajax"; -import BadgeSelectController from "discourse/mixins/badge-select-controller"; +import computed from "ember-addons/ember-computed-decorators"; -export default Ember.Component.extend(BadgeSelectController, { +export default Ember.Component.extend({ classNames: ["badge-title"], saved: false, saving: false, + @computed("saving") + savingStatus(saving) { + return saving ? I18n.t("saving") : I18n.t("save"); + }, + + @computed("selectableUserBadges", "selectedUserBadgeId") + selectedUserBadge(selectableUserBadges, selectedUserBadgeId) { + return selectableUserBadges.findBy("id", parseInt(selectedUserBadgeId)); + }, + actions: { save() { this.setProperties({ saved: false, saving: true }); diff --git a/app/assets/javascripts/discourse/controllers/badges/show.js.es6 b/app/assets/javascripts/discourse/controllers/badges/show.js.es6 index d3411ae6d3a..def520016e6 100644 --- a/app/assets/javascripts/discourse/controllers/badges/show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/badges/show.js.es6 @@ -1,11 +1,11 @@ +import Badge from "discourse/models/badge"; 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, { +export default Ember.Controller.extend({ queryParams: ["username"], noMoreBadges: false, userBadges: null, @@ -17,6 +17,16 @@ export default Ember.Controller.extend(BadgeSelectController, { return userBadgesAll.filterBy("badge.allow_title", true); }, + @computed("filteredList") + selectableUserBadges(filteredList) { + return [ + Ember.Object.create({ + badge: Badge.create({ name: I18n.t("badges.none") }) + }), + ...filteredList.uniqBy("badge.name") + ]; + }, + @computed("username") user(username) { if (username) { diff --git a/app/assets/javascripts/discourse/mixins/badge-select-controller.js.es6 b/app/assets/javascripts/discourse/mixins/badge-select-controller.js.es6 deleted file mode 100644 index 449030dad22..00000000000 --- a/app/assets/javascripts/discourse/mixins/badge-select-controller.js.es6 +++ /dev/null @@ -1,39 +0,0 @@ -import Badge from "discourse/models/badge"; -import computed from "ember-addons/ember-computed-decorators"; - -export default Ember.Mixin.create({ - saving: false, - saved: false, - - @computed("filteredList") - selectableUserBadges(items) { - items = _.uniq(items, false, function(e) { - return e.get("badge.name"); - }); - items.unshiftObject( - Ember.Object.create({ - badge: Badge.create({ name: I18n.t("badges.none") }) - }) - ); - return items; - }, - - @computed("saving") - savingStatus(saving) { - return saving ? I18n.t("saving") : I18n.t("save"); - }, - - @computed("selectedUserBadgeId") - selectedUserBadge(selectedUserBadgeId) { - selectedUserBadgeId = parseInt(selectedUserBadgeId); - let selectedUserBadge = null; - this.selectableUserBadges.forEach(function(userBadge) { - if (userBadge.get("id") === selectedUserBadgeId) { - selectedUserBadge = userBadge; - } - }); - return selectedUserBadge; - }, - - disableSave: Ember.computed.alias("saving") -}); diff --git a/app/assets/javascripts/discourse/templates/components/badge-title.hbs b/app/assets/javascripts/discourse/templates/components/badge-title.hbs index 23b1f4e22da..14c3ee8b6c3 100644 --- a/app/assets/javascripts/discourse/templates/components/badge-title.hbs +++ b/app/assets/javascripts/discourse/templates/components/badge-title.hbs @@ -18,7 +18,7 @@
- + {{#if saved}}{{i18n 'saved'}}{{/if}}