diff --git a/app/assets/javascripts/discourse/app/lib/plugin-api.js b/app/assets/javascripts/discourse/app/lib/plugin-api.js index c11b398fcaf..6f2f1190a27 100644 --- a/app/assets/javascripts/discourse/app/lib/plugin-api.js +++ b/app/assets/javascripts/discourse/app/lib/plugin-api.js @@ -1654,8 +1654,17 @@ class PluginApi { * }); * ``` * + * @deprecated because modifying an Ember-rendered DOM tree can lead to very unexpected errors. Use plugin outlet connectors instead **/ decorateTopicTitle(callback) { + deprecated( + "decorateTopicTitle is deprecated because modifying an Ember-rendered DOM tree can lead to very unexpected errors. Use plugin outlet connectors instead", + { + id: "discourse.decorate-topic-title", + since: "3.2", + dropFrom: "3.3", + } + ); addTopicTitleDecorator(callback); } diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-test.js index 02822d44e1f..04ccbd09908 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/topic-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/topic-test.js @@ -19,6 +19,7 @@ import { visible, } from "discourse/tests/helpers/qunit-helpers"; import selectKit from "discourse/tests/helpers/select-kit-helper"; +import { withSilencedDeprecations } from "discourse-common/lib/deprecated"; import { cloneJSON } from "discourse-common/lib/object"; import I18n from "discourse-i18n"; @@ -463,8 +464,10 @@ acceptance("Topic with title decorated", function (needs) { needs.user(); needs.hooks.beforeEach(() => { withPluginApi("0.8.40", (api) => { - api.decorateTopicTitle((topic, node, topicTitleType) => { - node.innerText = `${node.innerText}-${topic.id}-${topicTitleType}`; + withSilencedDeprecations("discourse.decorate-topic-title", () => { + api.decorateTopicTitle((topic, node, topicTitleType) => { + node.innerText = `${node.innerText}-${topic.id}-${topicTitleType}`; + }); }); }); });