export function useContributionsReminderEmailForm()

in dotcom-rendering/src/components/marketing/hooks/useContributionsReminderEmailForm.ts [19:53]


export function useContributionsReminderEmailForm(): ContributionsReminderEmailForm {
	const [isDirty, setIsDirty] = useState(false);
	const [email, setEmail] = useState('');

	const updateEmail = (e: React.ChangeEvent<HTMLInputElement>) => {
		setEmail(e.target.value);
		if (isDirty) {
			setIsDirty(false);
		}
	};

	const isEmpty = email.trim().length === 0;
	const isValid = isValidEmail(email) && emailIsShortEnoughForIdentity(email);

	let inputError;
	if (isDirty && isEmpty) {
		inputError = 'Please enter your email address';
	} else if (isDirty && !isValid) {
		inputError = 'Please enter a valid email address';
	}

	const handleSubmit = (onSubmit: () => void) => {
		const handler = (e: React.FormEvent<HTMLFormElement>) => {
			e.preventDefault();
			if (isValid) {
				onSubmit();
			} else {
				setIsDirty(true);
			}
		};
		return handler;
	};

	return { email, inputError, updateEmail, handleSubmit };
}