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 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 VideoNotePreview from './VideoNotePreview' 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, ExtendedKind.PUBLIC_MESSAGE ].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) { 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 } return
[{t('Cannot handle event of kind k', { k: event.kind })}]
}