From 81eb7a569d0c2f3e72e64cf8f69ae5457a5edb35 Mon Sep 17 00:00:00 2001 From: codytseng Date: Mon, 13 Oct 2025 22:22:35 +0800 Subject: [PATCH] feat: pin + reaction as the first suggestion --- src/components/SuggestedEmojis/index.tsx | 28 +++++++++++++++++++----- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/components/SuggestedEmojis/index.tsx b/src/components/SuggestedEmojis/index.tsx index 145cca3..93bfa10 100644 --- a/src/components/SuggestedEmojis/index.tsx +++ b/src/components/SuggestedEmojis/index.tsx @@ -21,18 +21,34 @@ export default function SuggestedEmojis({ useEffect(() => { try { const suggested = getSuggested() - const suggestEmojis = suggested - .sort((a, b) => b.count - a.count) - .map((item) => parseEmojiPickerUnified(item.unified)) - .filter(Boolean) as (string | TEmoji)[] - setSuggestedEmojis(() => [...suggestEmojis, ...DEFAULT_SUGGESTED_EMOJIS].slice(0, 8)) + const emojiSet = new Set() + const suggestEmojis = ( + suggested + .sort((a, b) => b.count - a.count) + .map((item) => parseEmojiPickerUnified(item.unified)) + .filter(Boolean) as (string | TEmoji)[] + ) + .concat(DEFAULT_SUGGESTED_EMOJIS) + .filter((emoji) => { + if (typeof emoji !== 'string') return true + if (emojiSet.has(emoji)) return false + emojiSet.add(emoji) + return true + }) + setSuggestedEmojis(suggestEmojis.slice(0, 9)) } catch { // ignore } }, []) return ( -
e.stopPropagation()}> +
e.stopPropagation()}> +
onEmojiClick('+')} + > + +
{suggestedEmojis.map((emoji, index) => typeof emoji === 'string' ? (