Fix links after emoji #2

merged
opened by harald.gigawatt.nl targeting main from harald.gigawatt.nl/red-dwarf: fix-links-after-emoji

JavaScript strings are encoded as UTF-16. When a Unicode character outside of the BMP is part of a string, it is encoded as a surrogate pair. For instance, '🎨' is encoded as '\uD83C\uDFA8', but a for-of loop will treat that as a single character with length 2. In getByteToCharMap, this was not handled, resulting in an incorrect value of charIndex and links being placed at the wrong location in messages.

Changed files
+1 -1
src
+1 -1
src/components/UniversalPostRenderer.tsx
···
for (let i = 0; i < bytes.length; i++) {
map[byteIndex++] = charIndex;
}
-
charIndex++;
}
return map;
···
for (let i = 0; i < bytes.length; i++) {
map[byteIndex++] = charIndex;
}
+
charIndex+=char.length;
}
return map;