diff --git a/app/assets/javascripts/discourse/app/components/badge-button.js b/app/assets/javascripts/discourse/app/components/badge-button.js index 0970e4b8a0b..0627cd5c918 100644 --- a/app/assets/javascripts/discourse/app/components/badge-button.js +++ b/app/assets/javascripts/discourse/app/components/badge-button.js @@ -1,13 +1,16 @@ import Component from "@ember/component"; -import discourseComputed from "discourse-common/utils/decorators"; +import { computed } from "@ember/object"; import domFromString from "discourse-common/lib/dom-from-string"; export default class BadgeButtonComponent extends Component { tagName = ""; badge = null; - @discourseComputed("badge.description") - title(badgeDescription) { - return domFromString(`
${badgeDescription}
`)[0].innerText; + @computed("badge.description") + get title() { + if (this.badge?.description) { + return domFromString(`
${this.badge?.description}
`)[0] + .innerText; + } } } diff --git a/app/assets/javascripts/discourse/tests/integration/components/badge-button-test.js b/app/assets/javascripts/discourse/tests/integration/components/badge-button-test.js index a6916ca114d..975d4c1075c 100644 --- a/app/assets/javascripts/discourse/tests/integration/components/badge-button-test.js +++ b/app/assets/javascripts/discourse/tests/integration/components/badge-button-test.js @@ -56,6 +56,14 @@ discourseModule("Integration | Component | badge-button", function (hooks) { async test(assert) { assert.equal(query(".user-badge").title, "a good run", "it strips html"); + + this.set("badge", { description: "a bad run" }); + + assert.equal( + query(".user-badge").title, + "a bad run", + "it updates title when changing description" + ); }, });