import { useFetchProfile } from '@/hooks/useFetchProfile' import { Pubkey } from '@/domain' import { useMemo } from 'react' export default function MentionPopup({ participants, query, onSelect, position }: { participants: string[] query: string // text after @ (lowercase) onSelect: (pubkey: string, displayName: string) => void position: { bottom: number; left: number } }) { const filtered = useMemo(() => { if (!query) return participants.slice(0, 8) return participants.filter((pk) => { const npub = Pubkey.tryFromString(pk)?.formatNpub(20) || '' return pk.toLowerCase().includes(query) || npub.toLowerCase().includes(query) }).slice(0, 8) }, [participants, query]) if (filtered.length === 0) return null return (
{filtered.map((pk) => ( ))}
) } function MentionItem({ pubkey, query, onSelect }: { pubkey: string query: string onSelect: (pubkey: string, displayName: string) => void }) { const { profile } = useFetchProfile(pubkey) const pk = Pubkey.tryFromString(pubkey) const displayName = profile?.username || pk?.formatNpub(8) || pubkey.slice(0, 12) const npub = pk?.npub || '' // Profile-based filtering (name match) const nameMatch = !query || displayName.toLowerCase().includes(query) if (!nameMatch && !pubkey.toLowerCase().includes(query)) return null return ( ) }