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 { toast } from 'sonner'; import { useArk } from '@libs/ark'; import { ArrowLeftIcon, CheckCircleIcon, ReplyIcon, ShareIcon } from '@shared/icons'; import { ChildNote, MemoizedTextKind, NoteActions, NoteReplyForm, 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(); const { ark } = useArk(); const { status, data } = useEvent(id); const [isCopy, setIsCopy] = useState(false); const share = async () => { try { 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); } catch (e) { toast.error(e); } }; const scrollToReply = () => { replyRef.current.scrollIntoView(); }; const renderKind = (event: NDKEvent) => { const thread = ark.getEventThread({ tags: event.tags }); switch (event.kind) { case NDKKind.Text: return ( <> {thread ? (