import { Skeleton } from '@/components/ui/skeleton' import { NSFW_DISPLAY_POLICY } from '@/constants' import { isMentioningMutedUsers, isNsfwEvent } from '@/lib/event' import { cn } from '@/lib/utils' import { useContentPolicy } from '@/providers/ContentPolicyProvider' import { useMuteList } from '@/providers/MuteListProvider' import { Event, kinds } from 'nostr-tools' import { useMemo } from 'react' import MainNoteCard from './MainNoteCard' import RepostNoteCard from './RepostNoteCard' export default function NoteCard({ event, className, filterMutedNotes = true, pinned = false, reposters }: { event: Event className?: string filterMutedNotes?: boolean pinned?: boolean reposters?: string[] }) { const { mutePubkeySet } = useMuteList() const { hideContentMentioningMutedUsers, nsfwDisplayPolicy } = useContentPolicy() const shouldHide = useMemo(() => { if (filterMutedNotes && mutePubkeySet.has(event.pubkey)) { return true } if (hideContentMentioningMutedUsers && isMentioningMutedUsers(event, mutePubkeySet)) { return true } if (nsfwDisplayPolicy === NSFW_DISPLAY_POLICY.HIDE && isNsfwEvent(event)) { return true } return false }, [event, filterMutedNotes, mutePubkeySet, nsfwDisplayPolicy]) if (shouldHide) return null if (event.kind === kinds.Repost || event.kind === kinds.GenericRepost) { return ( ) } return } export function NoteCardLoadingSkeleton({ className }: { className?: string }) { return (
) }