web/emojipicker: don't include sticker-only packs in emoji picker and vice versa

This commit is contained in:
Tulir Asokan 2024-12-21 19:23:56 +02:00
parent 6e25cc7f20
commit 316fcc5bbd
2 changed files with 4 additions and 4 deletions

View file

@ -145,7 +145,7 @@ export function usePreference<T extends keyof Preferences>(
} }
export function useCustomEmojis( export function useCustomEmojis(
ss: StateStore, room: RoomStateStore, ss: StateStore, room: RoomStateStore, usage: "stickers" | "emojis" = "emojis",
): CustomEmojiPack[] { ): CustomEmojiPack[] {
const personalPack = useSyncExternalStore( const personalPack = useSyncExternalStore(
ss.accountDataSubs.getSubscriber("im.ponies.user_emotes"), ss.accountDataSubs.getSubscriber("im.ponies.user_emotes"),
@ -164,6 +164,6 @@ export function useCustomEmojis(
if (personalPack) { if (personalPack) {
allPacksObject.personal = personalPack allPacksObject.personal = personalPack
} }
return Object.values(allPacksObject) return Object.values(allPacksObject).filter(pack => pack[usage].length > 0)
}, [personalPack, watchedRoomPacks, specialRoomPacks]) }, [personalPack, watchedRoomPacks, specialRoomPacks, usage])
} }

View file

@ -33,7 +33,7 @@ const StickerPicker = ({ style, onSelect, room }: MediaPickerProps) => {
const [query, setQuery] = useState("") const [query, setQuery] = useState("")
const [emojiCategoryBarRef, emojiListRef] = useCategoryUnderline() const [emojiCategoryBarRef, emojiListRef] = useCategoryUnderline()
const watchedEmojiPackKeys = client.store.getEmojiPackKeys().map(roomStateGUIDToString) const watchedEmojiPackKeys = client.store.getEmojiPackKeys().map(roomStateGUIDToString)
const customEmojiPacks = useCustomEmojis(client.store, room) const customEmojiPacks = useCustomEmojis(client.store, room, "stickers")
const emojis = useFilteredEmojis(query, { const emojis = useFilteredEmojis(query, {
// frequentlyUsed: client.store.frequentlyUsedStickers, // frequentlyUsed: client.store.frequentlyUsedStickers,
customEmojiPacks, customEmojiPacks,