From 542b6033c2e316d7327c9be5174588fee9aa053e Mon Sep 17 00:00:00 2001 From: reya Date: Thu, 4 Jan 2024 12:35:21 +0700 Subject: [PATCH] refactor(note): only support kind 1 --- packages/ark/src/components/note/content.tsx | 36 +++++++++ packages/ark/src/components/note/index.ts | 8 +- .../ark/src/components/note/kinds/article.tsx | 63 --------------- .../ark/src/components/note/kinds/media.tsx | 80 ------------------- .../ark/src/components/note/kinds/text.tsx | 23 ------ .../ark/src/components/note/mentions/note.tsx | 16 +--- .../components/note/primitives/childReply.tsx | 14 ++-- .../src/components/note/primitives/reply.tsx | 15 ++-- .../src/components/note/primitives/repost.tsx | 28 +++---- .../src/components/note/primitives/text.tsx | 8 +- .../src/components/note/primitives/thread.tsx | 18 +++-- packages/ark/src/provider.tsx | 5 +- 12 files changed, 82 insertions(+), 232 deletions(-) create mode 100644 packages/ark/src/components/note/content.tsx delete mode 100644 packages/ark/src/components/note/kinds/article.tsx delete mode 100644 packages/ark/src/components/note/kinds/media.tsx delete mode 100644 packages/ark/src/components/note/kinds/text.tsx diff --git a/packages/ark/src/components/note/content.tsx b/packages/ark/src/components/note/content.tsx new file mode 100644 index 00000000..186fb6bf --- /dev/null +++ b/packages/ark/src/components/note/content.tsx @@ -0,0 +1,36 @@ +import { cn } from "@lume/utils"; +import { NDKKind } from "@nostr-dev-kit/ndk"; +import { useNoteContext, useRichContent } from "../.."; + +export function NoteContent({ + className, +}: { + className?: string; +}) { + const event = useNoteContext(); + const { parsedContent } = useRichContent(event.content); + + if (event.kind === NDKKind.Text) { + return ( +
+ {parsedContent} +
+ ); + } + + return ( +
+ Unsupported kind +
+ ); +} diff --git a/packages/ark/src/components/note/index.ts b/packages/ark/src/components/note/index.ts index 4180d285..a3b2894d 100644 --- a/packages/ark/src/components/note/index.ts +++ b/packages/ark/src/components/note/index.ts @@ -4,9 +4,7 @@ import { NoteReply } from "./buttons/reply"; import { NoteRepost } from "./buttons/repost"; import { NoteZap } from "./buttons/zap"; import { NoteChild } from "./child"; -import { NoteArticleContent } from "./kinds/article"; -import { NoteMediaContent } from "./kinds/media"; -import { NoteTextContent } from "./kinds/text"; +import { NoteContent } from "./content"; import { NoteMenu } from "./menu"; import { NoteProvider } from "./provider"; import { NoteRoot } from "./root"; @@ -21,13 +19,11 @@ export const Note = { Reply: NoteReply, Repost: NoteRepost, Reaction: NoteReaction, + Content: NoteContent, Zap: NoteZap, Pin: NotePin, Child: NoteChild, Thread: NoteThread, - TextContent: NoteTextContent, - MediaContent: NoteMediaContent, - ArticleContent: NoteArticleContent, }; export * from "./provider"; diff --git a/packages/ark/src/components/note/kinds/article.tsx b/packages/ark/src/components/note/kinds/article.tsx deleted file mode 100644 index 2235797f..00000000 --- a/packages/ark/src/components/note/kinds/article.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import { NDKTag } from '@nostr-dev-kit/ndk'; -import { Link } from 'react-router-dom'; - -export function NoteArticleContent({ - eventId, - tags, -}: { - eventId: string; - tags: NDKTag[]; -}) { - const getMetadata = () => { - const title = tags.find((tag) => tag[0] === 'title')?.[1]; - const image = tags.find((tag) => tag[0] === 'image')?.[1]; - const summary = tags.find((tag) => tag[0] === 'summary')?.[1]; - - let publishedAt: Date | string | number = tags.find( - (tag) => tag[0] === 'published_at' - )?.[1]; - - publishedAt = new Date(parseInt(publishedAt) * 1000).toLocaleDateString('en-US'); - - return { - title, - image, - publishedAt, - summary, - }; - }; - - const metadata = getMetadata(); - - return ( - - {metadata.image && ( - {metadata.title} - )} -
-
- {metadata.title} -
- {metadata.summary ? ( -

- {metadata.summary} -

- ) : null} - - {metadata.publishedAt.toString()} - -
- - ); -} diff --git a/packages/ark/src/components/note/kinds/media.tsx b/packages/ark/src/components/note/kinds/media.tsx deleted file mode 100644 index 46cf2388..00000000 --- a/packages/ark/src/components/note/kinds/media.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { DownloadIcon } from "@lume/icons"; -import { fileType } from "@lume/utils"; -import { NDKTag } from "@nostr-dev-kit/ndk"; -import { downloadDir } from "@tauri-apps/api/path"; -import { download } from "@tauri-apps/plugin-upload"; -import { MediaPlayer, MediaProvider } from "@vidstack/react"; -import { - DefaultVideoLayout, - defaultLayoutIcons, -} from "@vidstack/react/player/layouts/default"; -import { Link } from "react-router-dom"; -import { twMerge } from "tailwind-merge"; - -export function NoteMediaContent({ - tags, - className, -}: { - tags: NDKTag[]; - className?: string; -}) { - const url = tags.find((el) => el[0] === "url")[1]; - const type = fileType(url); - - const downloadImage = async (url: string) => { - const downloadDirPath = await downloadDir(); - const filename = url.substring(url.lastIndexOf("/") + 1); - return await download(url, downloadDirPath + `/${filename}`); - }; - - if (type === "image") { - return ( -
- {url} - -
- ); - } - - if (type === "video") { - return ( -
- - - - -
- ); - } - - return ( -
- - {url} - -
- ); -} diff --git a/packages/ark/src/components/note/kinds/text.tsx b/packages/ark/src/components/note/kinds/text.tsx deleted file mode 100644 index 20fb4d0d..00000000 --- a/packages/ark/src/components/note/kinds/text.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { cn } from "@lume/utils"; -import { useRichContent } from "../../../hooks/useRichContent"; - -export function NoteTextContent({ - content, - className, -}: { - content: string; - className?: string; -}) { - const { parsedContent } = useRichContent(content); - - return ( -
- {parsedContent} -
- ); -} diff --git a/packages/ark/src/components/note/mentions/note.tsx b/packages/ark/src/components/note/mentions/note.tsx index 2a270da2..df220c48 100644 --- a/packages/ark/src/components/note/mentions/note.tsx +++ b/packages/ark/src/components/note/mentions/note.tsx @@ -1,4 +1,3 @@ -import { NDKEvent, NDKKind } from "@nostr-dev-kit/ndk"; import { memo } from "react"; import { Link } from "react-router-dom"; import { Note } from ".."; @@ -10,19 +9,6 @@ export const MentionNote = memo(function MentionNote({ }: { eventId: string; openable?: boolean }) { const { isLoading, isError, data } = useEvent(eventId); - const renderKind = (event: NDKEvent) => { - switch (event.kind) { - case NDKKind.Text: - return ; - case NDKKind.Article: - return ; - case 1063: - return ; - default: - return ; - } - }; - if (isLoading) { return (
- {renderKind(data)} + {openable ? ( - - - -
- + +
+ + +
+ +
+ diff --git a/packages/ark/src/components/note/primitives/reply.tsx b/packages/ark/src/components/note/primitives/reply.tsx index f677dee9..e16fd371 100644 --- a/packages/ark/src/components/note/primitives/reply.tsx +++ b/packages/ark/src/components/note/primitives/reply.tsx @@ -8,10 +8,8 @@ import { ChildReply } from "./childReply"; export function Reply({ event, - rootEvent, }: { event: NDKEventWithReplies; - rootEvent: string; }) { const [open, setOpen] = useState(false); @@ -19,12 +17,15 @@ export function Reply({ - - -
+
+ + +
+ +
{event.replies?.length > 0 ? ( -
+
) : null}
- + diff --git a/packages/ark/src/components/note/primitives/repost.tsx b/packages/ark/src/components/note/primitives/repost.tsx index 0dcb25a0..c4a8cc97 100644 --- a/packages/ark/src/components/note/primitives/repost.tsx +++ b/packages/ark/src/components/note/primitives/repost.tsx @@ -1,4 +1,4 @@ -import { NDKEvent, NDKKind, NostrEvent } from "@nostr-dev-kit/ndk"; +import { NDKEvent, NostrEvent } from "@nostr-dev-kit/ndk"; import { useQuery } from "@tanstack/react-query"; import { Note } from ".."; import { useArk } from "../../../provider"; @@ -30,18 +30,6 @@ export function RepostNote({ refetchOnWindowFocus: false, }); - const renderContentByKind = () => { - if (!repostEvent) return null; - switch (repostEvent.kind) { - case NDKKind.Text: - return ; - case 1063: - return ; - default: - return null; - } - }; - if (isLoading) { return
Loading...
; } @@ -52,8 +40,8 @@ export function RepostNote({ -
-
+
+

Failed to get event

You can consider enable Outbox in Settings for better event @@ -72,9 +60,12 @@ export function RepostNote({

- - {renderContentByKind()} -
+
+ + +
+ +
@@ -82,6 +73,7 @@ export function RepostNote({
+ N
diff --git a/packages/ark/src/components/note/primitives/text.tsx b/packages/ark/src/components/note/primitives/text.tsx index beb7fa0c..dc445f13 100644 --- a/packages/ark/src/components/note/primitives/text.tsx +++ b/packages/ark/src/components/note/primitives/text.tsx @@ -12,16 +12,16 @@ export function TextNote({ return ( -
+
- -
+ +
- + diff --git a/packages/ark/src/components/note/primitives/thread.tsx b/packages/ark/src/components/note/primitives/thread.tsx index 18938da4..b22de42c 100644 --- a/packages/ark/src/components/note/primitives/thread.tsx +++ b/packages/ark/src/components/note/primitives/thread.tsx @@ -14,16 +14,15 @@ export function ThreadNote({ eventId }: { eventId: string }) { return ( <> - + ); - case NDKKind.Article: - return ; - case 1063: - return ; default: return ( - + <> + + + ); } }; @@ -35,9 +34,12 @@ export function ThreadNote({ eventId }: { eventId: string }) { return ( - +
+ + +
{renderEventKind(data)} -
+
diff --git a/packages/ark/src/provider.tsx b/packages/ark/src/provider.tsx index 69be7d34..e5ecc16e 100644 --- a/packages/ark/src/provider.tsx +++ b/packages/ark/src/provider.tsx @@ -3,6 +3,7 @@ import { NDKCacheAdapterTauri } from "@lume/ndk-cache-tauri"; import { LumeStorage } from "@lume/storage"; import { QUOTES, delay, sendNativeNotification } from "@lume/utils"; import NDK, { + NDKKind, NDKNip46Signer, NDKPrivateKeySigner, NDKRelay, @@ -154,8 +155,8 @@ const LumeProvider = ({ children }: PropsWithChildren) => { // auth ndk.relayAuthDefaultPolicy = async (relay: NDKRelay, challenge: string) => { - const signIn = NDKRelayAuthPolicies.signIn({ ndk, signer }); - const event = await signIn(relay, challenge); + const signIn = NDKRelayAuthPolicies.signIn({ ndk }); + const event = await signIn(relay, challenge).catch((e) => console.log(e)); if (event) { sendNativeNotification( `You've sign in sucessfully to relay: ${relay.url}`,