import { PaperAirplaneIcon } from '@heroicons/react/20/solid' import { useWallet } from '@solana/wallet-adapter-react' import Input from '../forms/Input' import { ChangeEvent, FormEvent, useCallback, useState } from 'react' import { MessageProps } from './Messages' const ChatForm = ({ messages, setLatestMessages, }: { messages: MessageProps[] setLatestMessages: (x: any) => void }) => { const [messageText, setMessageText] = useState('') const { publicKey } = useWallet() const validateMessageText = async (text: string) => { try { const response = await fetch( `https://www.purgomalum.com/service/json?text=${text}&fill_char=*` ) const profanityCheck = await response.json() if (response.status === 200) { return profanityCheck.result } } catch { return } } const onSubmitMessage = async (e: FormEvent) => { e.preventDefault() const filteredMessageText = await validateMessageText(messageText) const message = { text: filteredMessageText ? filteredMessageText : messageText, timestamp: new Date().getTime(), user: 'Profile Name', walletPk: publicKey?.toString(), } const newMessages = [...messages, message] setLatestMessages(newMessages) setMessageText('') } const callbackRef = useCallback((inputElement: HTMLInputElement) => { if (inputElement) { const timer = setTimeout(() => inputElement.focus(), 500) return () => clearTimeout(timer) } }, []) return (
onSubmitMessage(e)} > ) => setMessageText(e.target.value) } className="w-full border-0 bg-th-bkg-1 p-3 focus:outline-none" placeholder="Write Something..." ref={callbackRef} />
) } export default ChatForm