import { useRouter } from 'next/navigation';

export const useActions = ({ setError, setIsLoading }) => {
	const router = useRouter();

	const handleSubmit = async (ev) => {
		ev.preventDefault();

		const formData = new FormData(ev.currentTarget);

		const username = formData.get('username');
		const password = formData.get('password');

		if (!username || !password) {
			return;
		}

		setIsLoading(true);
		try {
			const request = await fetch('/api/auth/login', {
				method: 'POST',
				headers: {
					'Content-Type': 'application/json',
				},
				body: JSON.stringify({
					username,
					password,
				}),
			});

			const response = await request.json();

			if (request.status == 404) {
				setError('Utilisateur inconnu');
				setIsLoading(false);
				return;
			}
			if (request.status == 403) {
				setError('Mauvais mot de passe');
				setIsLoading(false);
				return;
			}
			if (request.status == 500) {
				setError('Erreur interne. Veuillez réessayer');
				setIsLoading(false);
				return;
			}

			const { token } = response;

			localStorage.setItem('token', token);

			router.push('/');
		} catch (error) {
			console.error(error);
			setError('Erreur interne. Veuillez réessayer');
		}

		setIsLoading(false);
	};

	return {
		handleSubmit,
	};
};
