import { ExtendedKind } from '@/constants' import { cn } from '@/lib/utils' import { useMuteList } from '@/providers/MuteListProvider' import { Event, kinds } from 'nostr-tools' import { useMemo } from 'react' import { useTranslation } from 'react-i18next' import CommunityDefinitionPreview from './CommunityDefinitionPreview' import GroupMetadataPreview from './GroupMetadataPreview' import HighlightPreview from './HighlightPreview' import LiveEventPreview from './LiveEventPreview' import LongFormArticlePreview from './LongFormArticlePreview' import NormalContentPreview from './NormalContentPreview' import PollPreview from './PollPreview' export default function ContentPreview({ event, className }: { event?: Event className?: string }) { const { t } = useTranslation() const { mutePubkeys } = useMuteList() const isMuted = useMemo( () => (event ? mutePubkeys.includes(event.pubkey) : false), [mutePubkeys, event] ) if (!event) { return
{`[${t('Note not found')}]`}
} if (isMuted) { return (
[{t('This user has been muted')}]
) } if ( [ kinds.ShortTextNote, ExtendedKind.COMMENT, ExtendedKind.PICTURE, ExtendedKind.VOICE, ExtendedKind.VOICE_COMMENT ].includes(event.kind) ) { return } if (event.kind === kinds.Highlights) { return } if (event.kind === ExtendedKind.POLL) { return } if (event.kind === kinds.LongFormArticle) { return } if (event.kind === ExtendedKind.GROUP_METADATA) { return } if (event.kind === kinds.CommunityDefinition) { return } if (event.kind === kinds.LiveEvent) { return } return
[{t('Cannot handle event of kind k', { k: event.kind })}]
}