/* eslint-disable no-unused-expressions */ import React, { useState } from "react"; import Icons from "../../Helpers/Icons"; // import PasswordSvg from "../PasswordSvg"; import LoadingSpinner from "../../Spinners/LoadingSpinner"; import usersService from "../../../services/UsersService"; import { useNavigate } from "react-router-dom"; export default function ChangePasswordTab() { const apiUrl = new usersService() const navigate = useNavigate() const [oldPass, setOldPass] = useState("hide-password"); const [newPass, setNewPass] = useState("hide-password"); const [confirmPass, setConfirmPass] = useState("hide-password"); const [requestStatus, setRequestStatus] = useState({loading: false, status: false, message: ''}) const [inputEmpty, setInputEmpty] = useState(false) let [inputs, setInputs] = useState({ old_pwd: '', new_pwd: '', confirm_new_pwd: '' }) const handleInputChange = ({target:{name, value}}) => { // FUNCTION TO HANDLE WHEN AN INPUT CHANGES setInputs(prev => ({...prev, [name]:value})) } const handleCancel = () => { // FUNCTION TO CLEAR ALL TYPED INPUTS setInputs({ old_pwd: '', new_pwd: '', confirm_new_pwd: '' }) } 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"); } } }; const handlePwdUpdate = () => { setInputEmpty(false) // SETS THE STATE OF ANY INPUT IS EMPTY TO FALSE if(!inputs.old_pwd || !inputs.new_pwd || !inputs.confirm_new_pwd){ // CHECKS IF ANY INPUT FIELD IS EMPTY AND SETS INPUT EMPTY TO TRUE setInputEmpty(true) return setTimeout(()=>{setInputEmpty(false)},3000) } if(inputs.new_pwd != inputs.confirm_new_pwd){ // CHECKS IF PASSWORD MATCHES CONFIRM PASSWORD setRequestStatus({loading: false, status: false, message: 'new password must match confirm password'}) return setTimeout(()=>{setRequestStatus({loading: false, status: false, message: ''})},3000) } if(/^[a-zA-Z0-9]*$/.test(inputs.new_pwd) == false){ // CHECKS IF PASSWORD IS ALPHANUMERIC setRequestStatus({loading: false, status: false, message: 'password must be alphanumeric'}) return setTimeout(()=>{setRequestStatus({loading: false, status: false, message: ''})},3000) } if(inputs.new_pwd.length < 6){ // CHECKS IF PASSWORD IS UPTO SIX CHARACTERS setRequestStatus({loading: false, status: false, message: 'password must be upto six characters'}) return setTimeout(()=>{setRequestStatus({loading: false, status: false, message: ''})},3000) } let reqData = { // REQUEST PAYLOAD current_pass: inputs.old_pwd, new_pass: inputs.new_pwd } setRequestStatus({loading: true, status: false, message: ''}) apiUrl.profilePassChange(reqData).then(res => { if(res.status != 200 || res.data.internal_return < 0){ setRequestStatus({loading: false, status: false, message: 'unable to complete request'}) return } setRequestStatus({loading: false, status: true, message: 'password update was successful'}) setTimeout(()=>{navigate('/settings', {replace: true})}, 5000) }).catch(err => { setRequestStatus({loading: false, status: false, message: 'unable to complete request'}) }).finally(()=>{ setTimeout(()=>{setRequestStatus({loading: false, status: false, message: ''})},4000) }) } return (