diff --git a/src/app/notes/article.tsx b/src/app/notes/article.tsx index 4f746f55..d4a1ba2b 100644 --- a/src/app/notes/article.tsx +++ b/src/app/notes/article.tsx @@ -2,7 +2,7 @@ import { writeText } from '@tauri-apps/plugin-clipboard-manager'; import Markdown from 'markdown-to-jsx'; import { nip19 } from 'nostr-tools'; import { EventPointer } from 'nostr-tools/lib/types/nip19'; -import { useState } from 'react'; +import { useMemo, useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { ArrowLeftIcon, CheckCircleIcon, ShareIcon } from '@shared/icons'; @@ -12,13 +12,33 @@ import { ReplyList } from '@shared/notes/replies/list'; import { useEvent } from '@utils/hooks/useEvent'; export function ArticleNoteScreen() { - const navigate = useNavigate(); - const { id } = useParams(); const { status, data } = useEvent(id); const [isCopy, setIsCopy] = useState(false); + const navigate = useNavigate(); + const metadata = useMemo(() => { + if (status === 'pending') return; + + const title = data.tags.find((tag) => tag[0] === 'title')?.[1]; + const image = data.tags.find((tag) => tag[0] === 'image')?.[1]; + const summary = data.tags.find((tag) => tag[0] === 'summary')?.[1]; + + let publishedAt: Date | string | number = data.tags.find( + (tag) => tag[0] === 'published_at' + )?.[1]; + + publishedAt = new Date(parseInt(publishedAt) * 1000).toLocaleDateString('en-US'); + + return { + title, + image, + publishedAt, + summary, + }; + }, [data]); + const share = async () => { await writeText( 'https://njump.me/' + @@ -31,53 +51,68 @@ export function ArticleNoteScreen() { }; return ( -