import React, { useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; import { clearError } from '../store/reducers/authSlice'; import authService from '../services/authService'; const ForgotPassword = () => { const dispatch = useDispatch(); const navigate = useNavigate(); const { loading, error } = useSelector(state => state.auth); const [formData, setFormData] = useState({ email: '' }); const [isFocused, setIsFocused] = useState({ email: false }); const [success, setSuccess] = useState(false); const handleChange = (e) => { setFormData({ ...formData, [e.target.name]: e.target.value }); }; const handleFocus = (field) => { setIsFocused({ ...isFocused, [field]: true }); }; const handleBlur = (field) => { setIsFocused({ ...isFocused, [field]: false }); }; const handleSubmit = async (e) => { e.preventDefault(); // Prevent form submission if already loading if (loading === 'pending') { return; } try { await authService.forgotPassword(formData.email); setSuccess(true); // Clear form setFormData({ email: '' }); } catch (err) { console.error('Password reset request failed:', err); } }; const handleBackToLogin = () => { dispatch(clearError()); navigate('/login'); }; return (
{success ? 'Check your email for password reset instructions' : 'Enter your email to receive password reset instructions'}
© 2024 Lin. All rights reserved.