import { ExtendedKind } from '@/constants' import { isMentioningMutedUsers } 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 { useTranslation } from 'react-i18next' import CommunityDefinitionPreview from './CommunityDefinitionPreview' import EmojiPackPreview from './EmojiPackPreview' import FollowPackPreview from './FollowPackPreview' import GroupMetadataPreview from './GroupMetadataPreview' import HighlightPreview from './HighlightPreview' import LiveEventPreview from './LiveEventPreview' import LongFormArticlePreview from './LongFormArticlePreview' import NormalContentPreview from './NormalContentPreview' import PictureNotePreview from './PictureNotePreview' import PollPreview from './PollPreview' import ReactionPreview from './ReactionPreview' import VideoNotePreview from './VideoNotePreview' import MusicTrackPreview from './MusicTrackPreview' export default function ContentPreview({ event, className }: { event?: Event className?: string }) { const { t } = useTranslation() const { mutePubkeySet } = useMuteList() const { hideContentMentioningMutedUsers } = useContentPolicy() const isMuted = useMemo( () => (event ? mutePubkeySet.has(event.pubkey) : false), [mutePubkeySet, event] ) const isMentioningMuted = useMemo( () => hideContentMentioningMutedUsers && event ? isMentioningMutedUsers(event, mutePubkeySet) : false, [event, mutePubkeySet] ) if (!event) { return
{`[${t('Note not found')}]`}
} if (isMuted) { return (
[{t('This user has been muted')}]
) } if (isMentioningMuted) { return (
[{t('This note mentions a user you muted')}]
) } if ( [ kinds.ShortTextNote, ExtendedKind.COMMENT, ExtendedKind.VOICE, ExtendedKind.VOICE_COMMENT, ExtendedKind.RELAY_REVIEW ].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.VIDEO || event.kind === ExtendedKind.SHORT_VIDEO || event.kind === ExtendedKind.ADDRESSABLE_NORMAL_VIDEO || event.kind === ExtendedKind.ADDRESSABLE_SHORT_VIDEO ) { return } if (event.kind === ExtendedKind.PICTURE) { return } if (event.kind === ExtendedKind.GROUP_METADATA) { return } if (event.kind === kinds.CommunityDefinition) { return } if (event.kind === kinds.LiveEvent) { return } if (event.kind === kinds.Emojisets) { return } if (event.kind === ExtendedKind.FOLLOW_PACK) { return } if (event.kind === kinds.Reaction || event.kind === ExtendedKind.EXTERNAL_CONTENT_REACTION) { return } if (event.kind === ExtendedKind.MUSIC_TRACK) { return } return (
[ {event.kind === kinds.EncryptedDirectMessage ? t('Encrypted direct messages not supported') : t('Cannot handle event of kind k', { k: event.kind })} ]
) }