From 04c1223f2e945f2917643169ecf423a4bee30909 Mon Sep 17 00:00:00 2001 From: reya Date: Wed, 15 Nov 2023 13:32:23 +0700 Subject: [PATCH] update article screen --- src/app/notes/article.tsx | 113 +++++++++++++++++++---------- src/shared/layouts/note.tsx | 1 - src/shared/notes/article.tsx | 5 +- src/shared/notes/kinds/article.tsx | 5 +- 4 files changed, 82 insertions(+), 42 deletions(-) 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 ( -
-
-
- - -
+
+
+ +
{status === 'pending' ? (
Loading...
) : ( - +
+ {metadata.image && ( + {metadata.title} + )} +
+

{metadata.title}

+ + Published: {metadata.publishedAt.toString()} + +
+
+ - {data.content} - + }} + className="break-p prose-lg prose-neutral dark:prose-invert prose-ul:list-disc" + > + {data.content} +
+
)}
- +
diff --git a/src/shared/layouts/note.tsx b/src/shared/layouts/note.tsx index b8cbff8d..4b3106a1 100644 --- a/src/shared/layouts/note.tsx +++ b/src/shared/layouts/note.tsx @@ -13,7 +13,6 @@ export function NoteLayout() { ) : (
)} -
diff --git a/src/shared/notes/article.tsx b/src/shared/notes/article.tsx index 90aa6caf..40d84520 100644 --- a/src/shared/notes/article.tsx +++ b/src/shared/notes/article.tsx @@ -45,7 +45,10 @@ export function ArticleNote({ event }: { event: NDKEvent }) { {metadata.title} )}
diff --git a/src/shared/notes/kinds/article.tsx b/src/shared/notes/kinds/article.tsx index 6417d40c..50e34a84 100644 --- a/src/shared/notes/kinds/article.tsx +++ b/src/shared/notes/kinds/article.tsx @@ -34,7 +34,10 @@ export function ArticleKind({ id, tags }: { id: string; tags: NDKTag[] }) { {metadata.title} )}