/* eslint-disable no-unused-expressions */ import React, { useState } from "react"; import Icons from "../../Helpers/Icons"; import PasswordSvg from "../PasswordSvg"; import { toast } from "react-toastify"; import usersService from "../../../services/UsersService"; export default function ChangePasswordTab() { const [oldPass, setOldPass] = useState("hide-password"); const [newPass, setNewPass] = useState("hide-password"); const [confirmPass, setConfirmPass] = useState("hide-password"); const showPassword = (value) => { const password = document.getElementById(`${value}`); if (value && value === "old_password") { if (password.type === "password") { password.type = "text"; setOldPass("show-password"); } else { password.type = "password"; setOldPass("hide-password"); } } if (value && value === "new_password") { if (password.type === "password") { password.type = "text"; setNewPass("show-password"); } else { password.type = "password"; setNewPass("hide-password"); } } if (value && value === "confirm_password") { if (password.type === "password") { password.type = "text"; setConfirmPass("show-password"); } else { password.type = "password"; setConfirmPass("hide-password"); } } }; // Reset Password const reset_profilePass = new usersService() const [loading, setLoading] = useState(false) const [validation, setValidation] = useState("") // state for password values const [passwordDetails, setPasswordDetails] = useState({ prev_pass: '', new_pass: '', confirm_pass: '' }) // tracks password changes const handlePasswordChange = ({target:{name, value}}) => { setPasswordDetails(prev => ({...prev, [name]:value})) } const handleResetPassword = async(e) => { setValidation("") setLoading(true) let resetPassword = {...passwordDetails} let {prev_pass, new_pass, confirm_pass} = resetPassword // Check empty fields if(!prev_pass || !new_pass || !confirm_pass) { setLoading(false) setValidation("Please fill the empty fields") return } // Checking to see the password has if(!/^[A-Za-z]\w{6,14}$/.test(new_pass)) { setLoading(false) setValidation("it must be a more 7 alphanumeric characters") return } // matching new passwords with confirm_password if(new_pass != confirm_pass){ setLoading(false) setValidation("new password does not match") return } // matching new passwords with old passwords if(prev_pass === new_pass){ setLoading(false) setValidation("you can't use old passwords") return } // assigning new values to resetPassword resetPassword.member_id = localStorage.getItem("member_id") resetPassword.session_token = localStorage.getItem("session_token") resetPassword.member_uuid = localStorage.getItem("member_uuid") // removed confirm password from the payload delete resetPassword.confirm_pass try { const res = await reset_profilePass.resetProfilePassword(resetPassword) console.log(res) if(res.status != 200){ setLoading(false) setValidation("An error occurred") return } if(res.status == 200){ // if status is okay but can't success not granted if(res.data.status < 0 ) { setLoading(false) setValidation("sorry, error updating password") } else { setLoading(false) // setValidation("password updated successfully") toast.success("password updated successfully") // setPasswordDetails(prev => ({...prev, e.target.name: ''})) } } } catch (error) { setLoading(false) setValidation("something went wrong, try again later") } } return (
showPassword("old_password")} >
showPassword("new_password")} >
showPassword("confirm_password")} >
{validation &&

{validation}

}
); }