refactor: 💨

This commit is contained in:
codytseng 2025-07-07 22:34:59 +08:00
parent c729c20771
commit 8c5cc1041b
46 changed files with 1008 additions and 879 deletions

View file

@ -1,13 +1,14 @@
import { useSecondaryPage } from '@/PageManager'
import { ExtendedKind } from '@/constants'
import {
extractImageInfosFromEventTags,
getParentEventId,
getUsingClient,
isNsfwEvent,
isPictureEvent,
isSupportedKind
isPictureEvent
} from '@/lib/event'
import { toNote } from '@/lib/link'
import { useMuteList } from '@/providers/MuteListProvider'
import { useScreenSize } from '@/providers/ScreenSizeProvider'
import { Event, kinds } from 'nostr-tools'
import { useMemo, useState } from 'react'
@ -20,18 +21,25 @@ import ParentNotePreview from '../ParentNotePreview'
import TranslateButton from '../TranslateButton'
import UserAvatar from '../UserAvatar'
import Username from '../Username'
import CommunityDefinition from './CommunityDefinition'
import GroupMetadata from './GroupMetadata'
import Highlight from './Highlight'
import IValue from './IValue'
import LiveEvent from './LiveEvent'
import LongFormArticle from './LongFormArticle'
import MutedNote from './MutedNote'
import NsfwNote from './NsfwNote'
import { UnknownNote } from './UnknownNote'
export default function Note({
event,
originalNoteId,
size = 'normal',
className,
hideParentNotePreview = false
}: {
event: Event
originalNoteId?: string
size?: 'normal' | 'small'
className?: string
hideParentNotePreview?: boolean
@ -48,14 +56,37 @@ export default function Note({
)
const usingClient = useMemo(() => getUsingClient(event), [event])
const [showNsfw, setShowNsfw] = useState(false)
const { mutePubkeys } = useMuteList()
const [showMuted, setShowMuted] = useState(false)
let content: React.ReactNode
if (!isSupportedKind(event.kind)) {
if (
![
kinds.ShortTextNote,
kinds.Highlights,
kinds.LongFormArticle,
kinds.LiveEvent,
kinds.CommunityDefinition,
ExtendedKind.GROUP_METADATA,
ExtendedKind.PICTURE,
ExtendedKind.COMMENT
].includes(event.kind)
) {
content = <UnknownNote className="mt-2" event={event} />
} else if (mutePubkeys.includes(event.pubkey) && !showMuted) {
content = <MutedNote show={() => setShowMuted(true)} />
} else if (isNsfwEvent(event) && !showNsfw) {
content = <NsfwNote show={() => setShowNsfw(true)} />
} else if (event.kind === kinds.Highlights) {
content = <Highlight className="mt-2" event={event} />
} else if (event.kind === kinds.LongFormArticle) {
content = <LongFormArticle className="mt-2" event={event} />
} else if (event.kind === kinds.LiveEvent) {
content = <LiveEvent className="mt-2" event={event} />
} else if (event.kind === ExtendedKind.GROUP_METADATA) {
content = <GroupMetadata className="mt-2" event={event} originalNoteId={originalNoteId} />
} else if (event.kind === kinds.CommunityDefinition) {
content = <CommunityDefinition className="mt-2" event={event} />
} else {
content = <Content className="mt-2" event={event} />
}