You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

74 lines
1.9 KiB

import { ExtendedKind } from '@/constants'
import { isSupportedKind } from '@/lib/event'
import { useMuteList } from '@/providers/MuteListProvider'
import { Event, kinds } from 'nostr-tools'
import { useState } from 'react'
import GroupMetadataCard from './GroupMetadataCard'
import LiveEventCard from './LiveEventCard'
import LongFormArticleCard from './LongFormArticleCard'
import MainNoteCard from './MainNoteCard'
import MutedNoteCard from './MutedNoteCard'
import UnknownNoteCard from './UnknownNoteCard'
export default function GenericNoteCard({
event,
className,
reposter,
embedded,
originalNoteId
}: {
event: Event
className?: string
reposter?: string
embedded?: boolean
originalNoteId?: string
}) {
const [showMuted, setShowMuted] = useState(false)
const { mutePubkeys } = useMuteList()
if (mutePubkeys.includes(event.pubkey) && !showMuted) {
return (
<MutedNoteCard
event={event}
className={className}
reposter={reposter}
embedded={embedded}
show={() => setShowMuted(true)}
/>
)
}
if (isSupportedKind(event.kind)) {
return (
<MainNoteCard event={event} className={className} reposter={reposter} embedded={embedded} />
)
}
if (event.kind === kinds.LongFormArticle) {
return (
<LongFormArticleCard
className={className}
reposter={reposter}
event={event}
embedded={embedded}
/>
)
}
if (event.kind === kinds.LiveEvent) {
return (
<LiveEventCard event={event} className={className} reposter={reposter} embedded={embedded} />
)
}
if (event.kind === ExtendedKind.GROUP_METADATA) {
return (
<GroupMetadataCard
className={className}
event={event}
originalNoteId={originalNoteId}
embedded={embedded}
/>
)
}
return (
<UnknownNoteCard event={event} className={className} reposter={reposter} embedded={embedded} />
)
}