diff --git a/app/assets/javascripts/discourse/app/components/choose-topic.hbs b/app/assets/javascripts/discourse/app/components/choose-topic.hbs
index f9bf06d223a..15e42850396 100644
--- a/app/assets/javascripts/discourse/app/components/choose-topic.hbs
+++ b/app/assets/javascripts/discourse/app/components/choose-topic.hbs
@@ -30,7 +30,7 @@
/>
- {{replace-emoji t.fancy_title}}
+ {{replace-emoji t.title}}
{{bound-category-link
diff --git a/app/assets/javascripts/discourse/app/helpers/replace-emoji.js b/app/assets/javascripts/discourse/app/helpers/replace-emoji.js
index 3109cf29003..81d78a3a1f4 100644
--- a/app/assets/javascripts/discourse/app/helpers/replace-emoji.js
+++ b/app/assets/javascripts/discourse/app/helpers/replace-emoji.js
@@ -1,7 +1,9 @@
import { emojiUnescape } from "discourse/lib/text";
-import { htmlSafe } from "@ember/template";
+import { htmlSafe, isHTMLSafe } from "@ember/template";
import { registerUnbound } from "discourse-common/lib/helpers";
+import { escapeExpression } from "discourse/lib/utilities";
registerUnbound("replace-emoji", (text, options) => {
+ text = isHTMLSafe(text) ? text.toString() : escapeExpression(text);
return htmlSafe(emojiUnescape(text, options));
});
diff --git a/app/assets/javascripts/discourse/app/templates/modal/insert-hyperlink.hbs b/app/assets/javascripts/discourse/app/templates/modal/insert-hyperlink.hbs
index affbf5d1b6e..a69187ed8fb 100644
--- a/app/assets/javascripts/discourse/app/templates/modal/insert-hyperlink.hbs
+++ b/app/assets/javascripts/discourse/app/templates/modal/insert-hyperlink.hbs
@@ -21,7 +21,7 @@
data-title={{result.fancy_title}}
>
- {{replace-emoji result.fancy_title}}
+ {{replace-emoji result.title}}
{{#if result.category.parentCategory}}
{{category-link result.category.parentCategory}}
diff --git a/app/assets/javascripts/discourse/app/templates/review-topics.hbs b/app/assets/javascripts/discourse/app/templates/review-topics.hbs
index 286e391e0a7..5bed189751f 100644
--- a/app/assets/javascripts/discourse/app/templates/review-topics.hbs
+++ b/app/assets/javascripts/discourse/app/templates/review-topics.hbs
@@ -16,7 +16,7 @@
href={{rt.relative_url}}
rel="noopener noreferrer"
target="_blank"
- >{{replace-emoji rt.fancy_title}}
+ >{{replace-emoji rt.title}}
diff --git a/app/assets/javascripts/discourse/tests/integration/helpers/replace-emoji-test.js b/app/assets/javascripts/discourse/tests/integration/helpers/replace-emoji-test.js
new file mode 100644
index 00000000000..2ce8e73be3c
--- /dev/null
+++ b/app/assets/javascripts/discourse/tests/integration/helpers/replace-emoji-test.js
@@ -0,0 +1,29 @@
+import { module, test } from "qunit";
+import { setupRenderingTest } from "discourse/tests/helpers/component-test";
+import { render } from "@ember/test-helpers";
+import { hbs } from "ember-cli-htmlbars";
+
+module("Integration | Helper | replace-emoji", function (hooks) {
+ setupRenderingTest(hooks);
+
+ test("it replaces the emoji", async function (assert) {
+ await render(hbs`{{replace-emoji "some text :heart:"}}`);
+
+ assert.dom(`span`).includesText("some text");
+ assert.dom(`.emoji[title="heart"]`).exists();
+ });
+
+ test("it escapes the text", async function (assert) {
+ await render(
+ hbs`{{replace-emoji ""}}`
+ );
+
+ assert.dom(`span`).hasText("");
+ });
+
+ test("it renders html-safe text", async function (assert) {
+ await render(hbs`{{replace-emoji (html-safe "safe text")}}`);
+
+ assert.dom(`span`).hasText("safe text");
+ });
+});
diff --git a/app/assets/javascripts/select-kit/addon/templates/components/topic-row.hbs b/app/assets/javascripts/select-kit/addon/templates/components/topic-row.hbs
index d9b2074909b..fc832e4c640 100644
--- a/app/assets/javascripts/select-kit/addon/templates/components/topic-row.hbs
+++ b/app/assets/javascripts/select-kit/addon/templates/components/topic-row.hbs
@@ -1,5 +1,5 @@
- {{replace-emoji this.item.fancy_title}}
+{{replace-emoji this.item.title}}
{{bound-category-link
this.item.category
diff --git a/plugins/chat/assets/javascripts/discourse/components/chat-channel-about-view.hbs b/plugins/chat/assets/javascripts/discourse/components/chat-channel-about-view.hbs
index 77f999c9b69..29b3fa73c0a 100644
--- a/plugins/chat/assets/javascripts/discourse/components/chat-channel-about-view.hbs
+++ b/plugins/chat/assets/javascripts/discourse/components/chat-channel-about-view.hbs
@@ -31,7 +31,7 @@
|