diff --git a/src/app/notes/article.tsx b/src/app/notes/article.tsx
index 77a73e34..1d79ab3c 100644
--- a/src/app/notes/article.tsx
+++ b/src/app/notes/article.tsx
@@ -12,11 +12,11 @@ import { User } from '@shared/user';
import { useEvent } from '@utils/hooks/useEvent';
export function ArticleNoteScreen() {
+ const { id } = useParams();
+
const navigate = useNavigate();
const replyRef = useRef(null);
- const { id } = useParams();
-
const naddr = id.startsWith('naddr') ? (nip19.decode(id).data as AddressPointer) : null;
const { status, data } = useEvent(id, naddr);
diff --git a/src/shared/notes/kinds/article.tsx b/src/shared/notes/kinds/article.tsx
index 4dc94cc5..4f62ea5e 100644
--- a/src/shared/notes/kinds/article.tsx
+++ b/src/shared/notes/kinds/article.tsx
@@ -2,8 +2,6 @@ import { NDKEvent } from '@nostr-dev-kit/ndk';
import { memo, useMemo } from 'react';
import { Link } from 'react-router-dom';
-import { Image } from '@shared/image';
-
export function ArticleNote(props: { event?: NDKEvent }) {
const metadata = useMemo(() => {
const title = props.event.tags.find((tag) => tag[0] === 'title')?.[1];
@@ -28,28 +26,30 @@ export function ArticleNote(props: { event?: NDKEvent }) {
}, [props.event.id]);
return (
-
-
- {metadata.image && (
-
- )}
-
-
- {metadata.title}
-
- {metadata.summary ? (
-
- {metadata.summary}
-
- ) : null}
-
- {metadata.publishedAt.toString()}
-
-
+
+ {metadata.image && (
+
+ )}
+
+
+ {metadata.title}
+
+ {metadata.summary ? (
+
+ {metadata.summary}
+
+ ) : null}
+
+ {metadata.publishedAt.toString()}
+
);
diff --git a/src/shared/notes/kinds/articleDetail.tsx b/src/shared/notes/kinds/articleDetail.tsx
index b6ba3e98..4fc5f6b6 100644
--- a/src/shared/notes/kinds/articleDetail.tsx
+++ b/src/shared/notes/kinds/articleDetail.tsx
@@ -1,31 +1,38 @@
import { NDKEvent } from '@nostr-dev-kit/ndk';
+import Markdown from 'markdown-to-jsx';
+
+import { Boost, Hashtag, Invoice, MentionUser } from '@shared/notes';
export function ArticleDetailNote({ event }: { event: NDKEvent }) {
- /*const metadata = useMemo(() => {
- const title = event.tags.find((tag) => tag[0] === 'title')?.[1];
- const image = event.tags.find((tag) => tag[0] === 'image')?.[1];
- const summary = event.tags.find((tag) => tag[0] === 'summary')?.[1];
-
- let publishedAt: Date | string | number = event.tags.find(
- (tag) => tag[0] === 'published_at'
- )?.[1];
- if (publishedAt) {
- publishedAt = new Date(parseInt(publishedAt)).toLocaleDateString('en-US');
- } else {
- publishedAt = new Date(event.created_at * 1000).toLocaleDateString('en-US');
- }
-
- return {
- title,
- image,
- publishedAt,
- summary,
- };
- }, [event.id]);*/
-
return (
-
+ str,
+ forceBlock: true,
+ enforceAtxHeadings: true,
+ }}
+ className="break-p prose prose-neutral max-w-none select-text whitespace-pre-line leading-normal dark:prose-invert prose-headings:mb-1 prose-headings:mt-3 prose-p:mb-0 prose-p:mt-0 prose-p:last:mb-1 prose-a:font-normal prose-a:text-blue-500 prose-blockquote:mb-1 prose-blockquote:mt-1 prose-blockquote:border-l-[2px] prose-blockquote:border-blue-500 prose-blockquote:pl-2 prose-pre:whitespace-pre-wrap prose-pre:bg-white/10 prose-ol:m-0 prose-ol:mb-1 prose-ul:mb-1 prose-ul:mt-1 prose-img:mb-2 prose-img:mt-3 prose-hr:mx-0 prose-hr:my-2 hover:prose-a:text-blue-500"
+ >
{event.content}
-
+
);
}
diff --git a/src/shared/notes/kinds/text.tsx b/src/shared/notes/kinds/text.tsx
index 1c90e4c8..f8e8b211 100644
--- a/src/shared/notes/kinds/text.tsx
+++ b/src/shared/notes/kinds/text.tsx
@@ -42,6 +42,11 @@ export function TextNote(props: { content?: string; truncate?: boolean }) {
Invoice: {
component: Invoice,
},
+ a: {
+ props: {
+ target: '_blank',
+ },
+ },
},
slugify: (str) => str,
forceBlock: true,