From 21e2dcbc4322006a698b89d65342f6ced7cc5f68 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 27 Oct 2024 13:05:41 +0200 Subject: [PATCH] web/emoji: allow custom emojis in frequently used --- web/src/api/client.ts | 3 --- web/src/util/emoji/index.ts | 14 ++++++++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/web/src/api/client.ts b/web/src/api/client.ts index c026683..2e5a522 100644 --- a/web/src/api/client.ts +++ b/web/src/api/client.ts @@ -127,9 +127,6 @@ export default class Client { } async incrementFrequentlyUsedEmoji(targetEmoji: string) { - if (targetEmoji.startsWith("mxc://")) { - return - } let recentEmoji = this.store.accountData.get("io.element.recent_emoji")?.recent_emoji as [string, number][] | undefined if (!Array.isArray(recentEmoji)) { diff --git a/web/src/util/emoji/index.ts b/web/src/util/emoji/index.ts index 41cca07..a84c7ef 100644 --- a/web/src/util/emoji/index.ts +++ b/web/src/util/emoji/index.ts @@ -199,7 +199,17 @@ export function useFilteredEmojis(query: string, params: useEmojisParams = {}): } return Array.from(params.frequentlyUsed.keys() .map(key => { - const emoji = emojiMap.get(key) + let emoji: Emoji | undefined + if (key.startsWith("mxc://")) { + for (const pack of params.customEmojiPacks?.values() ?? []) { + emoji = pack.emojiMap.get(key) + if (emoji) { + break + } + } + } else { + emoji = emojiMap.get(key) + } if (!emoji) { return undefined } @@ -207,7 +217,7 @@ export function useFilteredEmojis(query: string, params: useEmojisParams = {}): }) .filter(emoji => emoji !== undefined)) .filter((_emoji, index) => index < 24) - }, [params.frequentlyUsed]) + }, [params.frequentlyUsed, params.customEmojiPacks]) const prev = useRef({ query: "", result: [],