Use Intl.Segmenter

This commit is contained in:
Half-Shot
2024-11-08 09:46:52 +00:00
parent 54f7afa0ef
commit 17f2647d89
4 changed files with 27 additions and 2 deletions

View File

@@ -20,6 +20,7 @@ import {
setLogExtension as setLKLogExtension,
setLogLevel as setLKLogLevel,
} from "livekit-client";
import "@formatjs/intl-segmenter/polyfill";
import { App } from "./App";
import { init as initRageshake } from "./settings/rageshake";

View File

@@ -208,10 +208,22 @@ export const ReactionsProvider = ({
return;
}
const emoji = content.emoji?.split(/(?:)/u)?.[0];
if (!content.emoji) {
logger.warn(`Reaction had no emoji from ${reactionEventId}`);
return;
}
const segment = new Intl.Segmenter(undefined, {
granularity: "grapheme",
})
.segment(content.emoji)
[Symbol.iterator]();
const emoji = segment.next().value?.segment;
if (!emoji) {
logger.warn(`Reaction had no emoji from ${reactionEventId}`);
logger.warn(
`Reaction had no emoji from ${reactionEventId} after splitting`,
);
return;
}