fix: skip parsing of duplicate emoji tags

This commit is contained in:
Julian Lam
2026-02-27 14:54:31 -05:00
parent 96719843e5
commit 6f1291675e

View File

@@ -559,6 +559,7 @@ Helpers.renderEmoji = (text, tags, strip = false) => {
tags = Array.isArray(tags) ? tags : [tags]; tags = Array.isArray(tags) ? tags : [tags];
let result = text; let result = text;
const parsed = new Set();
tags.forEach((tag) => { tags.forEach((tag) => {
const isEmoji = tag.type === 'Emoji'; const isEmoji = tag.type === 'Emoji';
const hasUrl = tag.icon && tag.icon.url; const hasUrl = tag.icon && tag.icon.url;
@@ -566,6 +567,9 @@ Helpers.renderEmoji = (text, tags, strip = false) => {
if (isEmoji && (strip || (hasUrl && isImage))) { if (isEmoji && (strip || (hasUrl && isImage))) {
let { name } = tag; let { name } = tag;
if (parsed.has(name)) {
return;
}
if (!name.startsWith(':')) { if (!name.startsWith(':')) {
name = `:${name}`; name = `:${name}`;
@@ -583,6 +587,7 @@ Helpers.renderEmoji = (text, tags, strip = false) => {
result = result.substring(0, index) + imgTag + result.substring(index + name.length); result = result.substring(0, index) + imgTag + result.substring(index + name.length);
index = result.indexOf(name, index + imgTag.length); index = result.indexOf(name, index + imgTag.length);
} }
parsed.add(name);
} }
}); });