Skip to content

Commit 1df87ec

Browse files
authored
Make isSingleEmoji synchronous (#2566)
1 parent 8df2d6c commit 1df87ec

File tree

4 files changed

+30
-11
lines changed

4 files changed

+30
-11
lines changed

frontend/app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@
8787
"@open-ic/open-storage-agent": "^0.1.6",
8888
"@sveltejs/svelte-virtual-list": "^3.0.1",
8989
"drange": "^2.0.1",
90-
"emoji-picker-element": "^1.11.2",
90+
"emoji-picker-element": "git+https://github.com/hpeebles/emoji-picker-element.git#716e3a30a87e7f7e471f90bebe1af93d90d866ff",
9191
"idb": "^6.1.5",
9292
"identicon.js": "^2.3.3",
9393
"intl-tel-input": "^17.0.16",

frontend/app/src/components/home/Markdown.svelte

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,13 @@
1515
export let suppressLinks: boolean = false;
1616
1717
let sanitized = "unsafe";
18-
let singleEmoji = false;
1918
19+
$: singleEmoji = isSingleEmoji(text);
2020
$: userStore = client.userStore;
2121
$: options = {
2222
breaks: !oneLine,
2323
};
2424
25-
$: {
26-
isSingleEmoji(text).then((b) => singleEmoji = b);
27-
}
28-
2925
function replaceUserIds(text: string): string {
3026
return text.replace(/@UserId\(([\d\w-]+)\)/g, (match, p1) => {
3127
const u = $userStore[p1];

frontend/app/src/utils/emojis.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,26 @@
11
import { Database } from "emoji-picker-element";
22

3+
const emojiSet = new Set<string>();
4+
let initializing = false;
5+
36
export const emojiDatabase = new Database();
47

5-
export async function isSingleEmoji(text: string): Promise<boolean> {
6-
return text.length > 0 && (await emojiDatabase.getEmojiByUnicodeOrName(text)) !== null;
8+
export function isSingleEmoji(text: string): boolean {
9+
initEmojiSet();
10+
return emojiSet.has(text);
711
}
12+
13+
function initEmojiSet() {
14+
if (emojiSet.size > 0 || initializing) return;
15+
initializing = true;
16+
17+
emojiDatabase
18+
.getAllNativeEmojis()
19+
.then((emojis) => emojis.forEach((e) => {
20+
emojiSet.add(e.unicode);
21+
e.skins?.forEach((s) => emojiSet.add(s.unicode));
22+
}))
23+
.finally(() => initializing = false);
24+
}
25+
26+
initEmojiSet();

frontend/package-lock.json

Lines changed: 7 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)