feat: highlight (#346)

This commit is contained in:
Cody Tseng 2025-05-22 22:39:13 +08:00 committed by GitHub
parent ef0dc9e923
commit 6c91ba9eff
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 197 additions and 29 deletions

View file

@ -1,8 +1,12 @@
import { useSecondaryPage } from '@/PageManager'
import { ExtendedKind } from '@/constants'
import { extractImageInfosFromEventTags, getParentEventId, getUsingClient } from '@/lib/event'
import {
extractImageInfosFromEventTags,
getParentEventId,
getUsingClient,
isPictureEvent
} from '@/lib/event'
import { toNote } from '@/lib/link'
import { Event } from 'nostr-tools'
import { Event, kinds } from 'nostr-tools'
import { useMemo } from 'react'
import Content from '../Content'
import { FormattedTimestamp } from '../FormattedTimestamp'
@ -11,6 +15,7 @@ import NoteOptions from '../NoteOptions'
import ParentNotePreview from '../ParentNotePreview'
import UserAvatar from '../UserAvatar'
import Username from '../Username'
import Highlight from './Highlight'
export default function Note({
event,
@ -25,10 +30,16 @@ export default function Note({
}) {
const { push } = useSecondaryPage()
const parentEventId = useMemo(
() => (hideParentNotePreview ? undefined : getParentEventId(event)),
() =>
!hideParentNotePreview && event.kind === kinds.ShortTextNote
? getParentEventId(event)
: undefined,
[event, hideParentNotePreview]
)
const imageInfos = useMemo(() => extractImageInfosFromEventTags(event), [event])
const imageInfos = useMemo(
() => (isPictureEvent(event) ? extractImageInfosFromEventTags(event) : []),
[event]
)
const usingClient = useMemo(() => getUsingClient(event), [event])
return (
@ -66,10 +77,12 @@ export default function Note({
}}
/>
)}
<Content className="mt-2" event={event} />
{event.kind === ExtendedKind.PICTURE && imageInfos.length > 0 && (
<ImageGallery images={imageInfos} />
{event.kind === kinds.Highlights ? (
<Highlight className="mt-2" event={event} />
) : (
<Content className="mt-2" event={event} />
)}
{imageInfos.length > 0 && <ImageGallery images={imageInfos} />}
</div>
)
}