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: [],