import { NDKEvent, NDKKind, NDKUser } from '@nostr-dev-kit/ndk'; import { useState } from 'react'; import { toast } from 'sonner'; import { MediaUploader } from '@app/chats/components/mediaUploader'; import { useNDK } from '@libs/ndk/provider'; import { EnterIcon } from '@shared/icons'; export function ChatForm({ receiverPubkey }: { receiverPubkey: string }) { const { ndk } = useNDK(); const [value, setValue] = useState(''); const submit = async () => { try { const recipient = new NDKUser({ pubkey: receiverPubkey }); const message = await ndk.signer.encrypt(recipient, value); const event = new NDKEvent(ndk); event.content = message; event.kind = NDKKind.EncryptedDirectMessage; event.tag(recipient); const publish = await event.publish(); if (publish) setValue(''); } catch (e) { toast.error(e); } }; const handleEnterPress = (e: { key: string; shiftKey: KeyboardEvent['shiftKey']; preventDefault: () => void; }) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); submit(); } }; return (
setValue(e.target.value)} onKeyDown={handleEnterPress} spellCheck={false} autoComplete="off" autoCorrect="off" autoCapitalize="off" placeholder="Message..." className="h-10 flex-1 resize-none bg-transparent px-3 text-neutral-900 placeholder:text-neutral-600 focus:outline-none dark:text-neutral-100 dark:placeholder:text-neutral-300" />
); }