[Glitch] Fix nodes order being sometimes mangled when rewriting emoji

backport ccbca50a25 by Claire
This commit is contained in:
Jeremy Kescher 2022-11-14 22:40:37 +01:00
parent ec15e58efa
commit 06faf2f977
No known key found for this signature in database
GPG key ID: 48DFE4BB15BA5940
2 changed files with 12 additions and 5 deletions

View file

@ -19,10 +19,13 @@ const emojiFilename = (filename) => {
return borderedEmoji.includes(filename) ? (filename + '_border') : filename;
};
const domParser = new DOMParser();
const emojifyTextNode = (node, customEmojis) => {
const parentElement = node.parentElement;
let str = node.textContent;
const fragment = new DocumentFragment();
for (;;) {
let match, i = 0;
@ -64,12 +67,16 @@ const emojifyTextNode = (node, customEmojis) => {
}
}
node.textContent = str.slice(0, i);
parentElement.insertAdjacentHTML('beforeend', replacement);
str = str.slice(rend);
node = document.createTextNode(str);
parentElement.append(node);
fragment.append(document.createTextNode(str.slice(0, i)));
if (replacement) {
fragment.append(domParser.parseFromString(replacement, 'text/html').documentElement.getElementsByTagName('img')[0]);
}
node.textContent = str.slice(0, i);
str = str.slice(rend);
}
fragment.append(document.createTextNode(str));
node.parentElement.replaceChild(fragment, node);
};
const emojifyNode = (node, customEmojis) => {

View file

@ -25,7 +25,7 @@ module Mastodon
end
def suffix_version
'+1.0.0'
'+1.0.1'
end
def to_a