import { useState, useEffect } from 'react'; import InputBox from './InputBox'; export default function ContactForm() { const [ error, setError ] = useState(""); const [ success, setSuccess ] = useState(false); const [ inputState, setInputState ] = useState<{name: string, email: string, subject: string, message: string}>({ name: "", email: "", subject: "", message: "" }); const onSubmit = () => { if ( inputState.name === "" || inputState.email === "" || inputState.subject === "" || inputState.message === "" ) { setError("A required field was missing") } else { console.log("Form submitted") fetch(import.meta.env.VITE_API_BASE_URL + "/contact", { method: "post", headers: { 'content-type': 'application/json' }, body: JSON.stringify(inputState) }).then((res) => { if (res.ok) { setSuccess(true) } else { if (res.status === 429) { setError("Too many tries! Try again later") } else { setError("An error occurred while submitting your info.") } } }).catch((e) => { console.error(e) setError("An error occurred while submitting your info.") }) } } useEffect(() => { setTimeout(() => { setError("") }, 6000) }, [error]); useEffect(() => { setTimeout(() => { setSuccess(false) }, 6000) }, [success]); return (

Contact Me


{ setInputState((prevState) => { return { ...prevState, name: value } }) }} /> { setInputState((prevState) => { return { ...prevState, email: value } }) }} /> { setInputState((prevState) => { return { ...prevState, subject: value } }) }} /> { setInputState((prevState) => { return { ...prevState, message: value } }) }} />

{error}

{ success && "Success! Your message has been received"}

) }