8 changed files with 61 additions and 19 deletions
@ -0,0 +1,24 @@ |
|||||||
|
import { useSecondaryPage } from '@renderer/PageManager' |
||||||
|
import { Card } from '@renderer/components/ui/card' |
||||||
|
import { toNote } from '@renderer/lib/link' |
||||||
|
import { Event } from 'nostr-tools' |
||||||
|
import UserAvatar from '../UserAvatar' |
||||||
|
import Username from '../Username' |
||||||
|
|
||||||
|
export default function ParentNote({ event }: { event: Event }) { |
||||||
|
const { push } = useSecondaryPage() |
||||||
|
|
||||||
|
return ( |
||||||
|
<div> |
||||||
|
<Card |
||||||
|
className="flex space-x-1 p-1 items-center hover:bg-muted/50 cursor-pointer text-xs text-muted-foreground hover:text-foreground" |
||||||
|
onClick={() => push(toNote(event))} |
||||||
|
> |
||||||
|
<UserAvatar userId={event.pubkey} size="tiny" /> |
||||||
|
<Username userId={event.pubkey} className="font-semibold" /> |
||||||
|
<div className="truncate">{event.content}</div> |
||||||
|
</Card> |
||||||
|
<div className="ml-5 w-px h-2 bg-border" /> |
||||||
|
</div> |
||||||
|
) |
||||||
|
} |
||||||
@ -1,19 +1,25 @@ |
|||||||
import Note from '@renderer/components/Note' |
import Note from '@renderer/components/Note' |
||||||
|
import ParentNote from '@renderer/components/ParentNote' |
||||||
import ReplyNoteList from '@renderer/components/ReplyNoteList' |
import ReplyNoteList from '@renderer/components/ReplyNoteList' |
||||||
import { Separator } from '@renderer/components/ui/separator' |
import { Separator } from '@renderer/components/ui/separator' |
||||||
|
import { useFetchEventById } from '@renderer/hooks' |
||||||
import SecondaryPageLayout from '@renderer/layouts/SecondaryPageLayout' |
import SecondaryPageLayout from '@renderer/layouts/SecondaryPageLayout' |
||||||
|
import { getParentEventId, getRootEventId } from '@renderer/lib/event' |
||||||
import { Event } from 'nostr-tools' |
import { Event } from 'nostr-tools' |
||||||
|
|
||||||
export default function NotePage({ event }: { event?: Event }) { |
export default function NotePage({ event }: { event?: Event }) { |
||||||
|
const parentEvent = useFetchEventById(getParentEventId(event)) |
||||||
|
const rootEvent = useFetchEventById(getRootEventId(event)) |
||||||
|
|
||||||
|
if (!event) return null |
||||||
|
|
||||||
return ( |
return ( |
||||||
<SecondaryPageLayout titlebarContent="note"> |
<SecondaryPageLayout titlebarContent="note"> |
||||||
{event && ( |
{rootEvent && <ParentNote key={`root-note-${event.id}`} event={rootEvent} />} |
||||||
<> |
{parentEvent && <ParentNote key={`parent-note-${event.id}`} event={parentEvent} />} |
||||||
<Note key={`note-${event.id}`} event={event} fetchNoteStats /> |
<Note key={`note-${event.id}`} event={event} fetchNoteStats /> |
||||||
<Separator className="mt-2" /> |
<Separator className="my-2" /> |
||||||
<ReplyNoteList key={`reply-note-list-${event.id}`} event={event} /> |
<ReplyNoteList key={`reply-note-list-${event.id}`} event={event} /> |
||||||
</> |
|
||||||
)} |
|
||||||
</SecondaryPageLayout> |
</SecondaryPageLayout> |
||||||
) |
) |
||||||
} |
} |
||||||
|
|||||||
Loading…
Reference in new issue