import { FC, useCallback, useEffect, useState } from 'react' import cn from 'classnames' import s from './Subscribe.module.css' import { Button } from '@components/ui' import { validate } from 'email-validator' import useSubscribe from '@framework/subscriptions/use-subscribe' interface Props { className?: string } const Subscribe: FC = ({ className }) => { const [email, setEmail] = useState('') const [dirty, setDirty] = useState(false) const [disabled, setDisabled] = useState(false) const [loading, setLoading] = useState(false) const subscribe = useSubscribe() const handleValidation = useCallback(() => { // Unable to send form unless fields are valid. if (dirty) { setDisabled(!validate(email)) } }, [email, dirty]) useEffect(() => { handleValidation() }, [handleValidation]) const handleSubscribe = async (e: React.SyntheticEvent) => { e.preventDefault() if (!dirty && !disabled) { setDirty(true) handleValidation() } setLoading(true) try { await subscribe({ email }) setLoading(false) } catch (error) { console.error(error); setLoading(false) setDisabled(false) } } return (
) } export default Subscribe