mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-06 04:21:17 +01:00
fix: skip parsing of duplicate emoji tags
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user