import { writeText } from '@tauri-apps/plugin-clipboard-manager'; import { nip19 } from 'nostr-tools'; import { AddressPointer, EventPointer } from 'nostr-tools/lib/types/nip19'; import { useRef, useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { ArrowLeftIcon, CheckCircleIcon, ReplyIcon, ShareIcon } from '@shared/icons'; import { NoteActions, NoteReplyForm } from '@shared/notes'; import { ReplyList } from '@shared/notes/replies/list'; 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 naddr = id.startsWith('naddr') ? (nip19.decode(id).data as AddressPointer) : null; const { status, data } = useEvent(id, naddr); 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(); }; return (