import { Button } from '@/components/ui/button' import { parseEmojiPickerUnified } from '@/lib/utils' import { TEmoji } from '@/types' import { getSuggested } from 'emoji-picker-react/src/dataUtils/suggested' import { MoreHorizontal } from 'lucide-react' import { useEffect, useState } from 'react' import Emoji from '../Emoji' const DEFAULT_SUGGESTED_EMOJIS = ['👍', '❤️', '😂', '🥲', '👀', '🫡', '🫂'] export default function SuggestedEmojis({ onEmojiClick, onMoreButtonClick }: { onEmojiClick: (emoji: string | TEmoji) => void onMoreButtonClick: () => void }) { const [suggestedEmojis, setSuggestedEmojis] = useState<(string | TEmoji)[]>(DEFAULT_SUGGESTED_EMOJIS) useEffect(() => { try { const suggested = getSuggested() 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()}>
onEmojiClick('+')} >
{suggestedEmojis.map((emoji, index) => typeof emoji === 'string' ? (
onEmojiClick(emoji)} > {emoji}
) : (
onEmojiClick(emoji)} >
) )}
) }