import { AccountContext } from '@components/accountProvider'; import { RelayContext } from '@components/relaysProvider'; import { UserExtend } from '@components/user/extend'; import { WRITEONLY_RELAYS } from '@stores/constants'; import { dateToUnix } from '@utils/getDate'; import { Dialog, Transition } from '@headlessui/react'; import { ChatLines, OpenNewWindow } from 'iconoir-react'; import { getEventHash, signEvent } from 'nostr-tools'; import { Fragment, useContext, useState } from 'react'; import { navigate } from 'vite-plugin-ssr/client/router'; export const NoteComment = ({ count, eventID, eventPubkey, eventContent, eventTime, }: { count: number; eventID: string; eventPubkey: string; eventTime: number; eventContent: any; }) => { const pool: any = useContext(RelayContext); const activeAccount: any = useContext(AccountContext); const [isOpen, setIsOpen] = useState(false); const [value, setValue] = useState(''); const profile = activeAccount ? JSON.parse(activeAccount.metadata) : null; const closeModal = () => { setIsOpen(false); }; const openModal = () => { setIsOpen(true); }; const openThread = () => { navigate(`/newsfeed/note?id=${eventID}`); }; const submitEvent = () => { const event: any = { content: value, created_at: dateToUnix(), kind: 1, pubkey: activeAccount.pubkey, tags: [['e', eventID]], }; event.id = getEventHash(event); event.sig = signEvent(event, activeAccount.privkey); pool.publish(event, WRITEONLY_RELAYS); setIsOpen(false); }; return ( <> openModal()} className="group flex w-16 items-center gap-1 text-sm text-zinc-500" > {count} {/* root note */} {eventContent} {/* divider */} {/* comment form */} setValue(e.target.value)} placeholder="Send your comment" className="relative h-36 w-full resize-none rounded-md border border-black/5 px-3.5 py-3 text-sm shadow-input shadow-black/5 !outline-none placeholder:text-zinc-400 dark:bg-zinc-800 dark:text-zinc-200 dark:shadow-black/10 dark:placeholder:text-zinc-500" spellCheck={false} /> openThread()} className="inline-flex h-6 w-6 cursor-pointer items-center justify-center rounded-md hover:bg-zinc-700" > submitEvent()} disabled={value.length === 0 ? true : false} className="inline-flex h-8 w-16 items-center justify-center rounded-md bg-fuchsia-500 px-4 text-sm font-medium shadow-md shadow-fuchsia-900/50 hover:bg-fuchsia-600" > Send > ); };