UNPKG

@open-tender/utils

Version:

A library of utils for use with Open Tender applications that utilize our cloud-based Order API.

41 lines (40 loc) 1.43 kB
import { useState } from 'react'; import { validatePassword } from '../utils/passwordValidation'; /** * Custom hook for password field validation and state management * Follows SRP by encapsulating all password-related state and logic */ export const usePasswordValidation = () => { const [passwordTouched, setPasswordTouched] = useState(false); const handlePasswordChange = () => { if (!passwordTouched) { setPasswordTouched(true); } }; const isPasswordValid = (password) => { if (!password) return false; const validation = validatePassword(password); return validation.isValid; }; const shouldShowRequirements = (password, hidePassword = false) => { return !hidePassword && !!password; }; const getPasswordErrors = (password, errors, fieldName = 'password') => { const passwordErrors = {}; if (errors[fieldName]) { // If password is valid according to frontend but still has error, it's from backend const isValidFrontend = password && validatePassword(password).isValid; if (isValidFrontend || !password) { passwordErrors[fieldName] = errors[fieldName]; } } return passwordErrors; }; return { handlePasswordChange, isPasswordValid, shouldShowRequirements, getPasswordErrors }; };