import { NDKEvent, NDKKind } from '@nostr-dev-kit/ndk'; import { writeText } from '@tauri-apps/plugin-clipboard-manager'; import { nip19 } from 'nostr-tools'; import { EventPointer } from 'nostr-tools/lib/types/nip19'; import { useRef, useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { useStorage } from '@libs/storage/provider'; import { ArrowLeftIcon, CheckCircleIcon, ReplyIcon, ShareIcon } from '@shared/icons'; import { ArticleNote, FileNote, NoteActions, NoteReplyForm, NoteStats, TextNote, UnknownNote, } from '@shared/notes'; import { ReplyList } from '@shared/notes/replies/list'; import { User } from '@shared/user'; import { useEvent } from '@utils/hooks/useEvent'; export function TextNoteScreen() { const navigate = useNavigate(); const replyRef = useRef(null); const { id } = useParams(); console.log(id); const { db } = useStorage(); const { status, data } = useEvent(id); const [isCopy, setIsCopy] = useState(false); const share = async () => { await writeText( 'https://njump.me/' + nip19.neventEncode({ id: data.id, author: data.pubkey } as EventPointer) ); // update state setIsCopy(true); // reset state after 2 sec setTimeout(() => setIsCopy(false), 2000); }; const scrollToReply = () => { replyRef.current.scrollIntoView(); }; const renderKind = (event: NDKEvent) => { switch (event.kind) { case NDKKind.Text: return ; case NDKKind.Article: return ; case 1063: return ; default: return ; } }; return (
{status === 'loading' ? (
Loading...
) : (
{renderKind(data)}
)}
); }