'use client'; import IconLockDots from '@/components/icon/icon-lock-dots'; import { useRouter } from 'next/navigation'; import React, {useState, useEffect} from 'react'; import axios from 'axios'; import { Eye, EyeOff } from "lucide-react"; import { ApiServerBaseUrl } from '@/utils/baseurl.utils'; const ComponentsAuthUnlockForm = () => { const router = useRouter(); const [currentPassword, setCurrentPassword] = useState(""); const [newPassword, setNewPassword] = useState(""); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const [success, setSuccess] = useState(""); const [userEmail, setUserEmail] = useState(null); const [redirecting, setRedirecting] = useState(false); const [showPassword, setShowPassword] = useState(false); const [showPassword1, setShowPassword1] = useState(false); interface ChangePasswordResponse { message?: string; error?: string; } // ✅ Load user email & verify auth useEffect(() => { // 🧠 Prevent running this effect after password update redirect starts if (redirecting) return; const token = localStorage.getItem("token"); const email = localStorage.getItem("d4a_email"); if (!token) { setError("You are not logged in. Redirecting to login..."); setTimeout(() => router.push("/login"), 1500); } else { setUserEmail(email); } }, [router, redirecting]); const submitForm = async (e: React.FormEvent) => { e.preventDefault(); setError(""); setSuccess(""); const token = localStorage.getItem("token"); const email = localStorage.getItem("d4a_email"); if (!token || !email) { setError("Session expired or missing. Please log in again."); return; } if (!currentPassword || !newPassword) { setError("Please fill all fields."); return; } setLoading(true); try { const res = await axios.post( `${ApiServerBaseUrl}/auth/change-password`, { email, currentPassword, newPassword }, { headers: { Authorization: `Bearer ${token}` }, } ); setSuccess(res.data.message || "Password updated successfully!"); console.log("Password updated successfully, redirecting to login in 2 seconds..."); setRedirecting(true); // ✅ prevents useEffect from running again setTimeout(() => { localStorage.removeItem("token"); router.push("/login"); }, 1200); } catch (err: any) { console.error("Change Password Error:", err); const msg = err.response?.data?.error || err.response?.data?.message || err.message || "Something went wrong. Please try again."; if (msg.toLowerCase().includes("expired")) { setError("Session expired. Please log in again."); setTimeout(() => router.push("/login"), 1500); } else { setError(msg); } } finally { setLoading(false); } }; return (
setCurrentPassword(e.target.value)} required /> {/* 👁️ Eye toggle (right) */}
{/* 🔑 New Password */}
setNewPassword(e.target.value)} required /> {/* 👁️ Eye toggle (right) */}
{error &&

{error}

} {success &&

{success}

}
); }; export default ComponentsAuthUnlockForm;