56 lines
1.3 KiB
JavaScript
56 lines
1.3 KiB
JavaScript
import { useState } from 'react'
|
|
|
|
const VALID_USER = {
|
|
name: 'Teszt Elek',
|
|
email: 'tesztelek@teszt.hu',
|
|
}
|
|
|
|
function validate(name, email) {
|
|
const errors = {}
|
|
if (!name) errors.name = 'A név kötelező.'
|
|
if (!email) errors.email = 'Az email kötelező.'
|
|
else if (!/\S+@\S+\.\S+/.test(email)) errors.email = 'Érvénytelen email cím.'
|
|
return errors
|
|
}
|
|
|
|
export function useContactForm() {
|
|
const [name, setName] = useState('')
|
|
const [email, setEmail] = useState('')
|
|
const [errors, setErrors] = useState({})
|
|
const [loginError, setLoginError] = useState(null)
|
|
const [success, setSuccess] = useState(false)
|
|
|
|
function handleSubmit(e) {
|
|
e.preventDefault()
|
|
|
|
const newErrors = validate(name, email)
|
|
if (Object.keys(newErrors).length > 0) {
|
|
setErrors(newErrors)
|
|
setLoginError(null)
|
|
return
|
|
}
|
|
|
|
setErrors({})
|
|
|
|
if (
|
|
name.trim() === VALID_USER.name &&
|
|
email.trim().toLowerCase() === VALID_USER.email
|
|
) {
|
|
setLoginError(null)
|
|
setSuccess(true)
|
|
} else {
|
|
setLoginError('Hibás név vagy email cím. Próbáld újra.')
|
|
setSuccess(false)
|
|
}
|
|
}
|
|
|
|
return {
|
|
fields: { name, email },
|
|
errors,
|
|
loginError,
|
|
success,
|
|
handlers: { setName, setEmail },
|
|
handleSubmit,
|
|
}
|
|
}
|