import {useState} from 'react';

export interface FORM_RULES {
    [key: string]: {
        condition: (e: any) => boolean,
        message: string
    }
}

// type VALIDITY = 'valid' | 'invalid' | 'error'

const useFormValidate = (form_rules: FORM_RULES) => {

    const [formErrors, setFormErrors] = useState<Record<string, string>>({})



    //
    // useEffect(()=>{
    // }, [formErrors])
    //
    // useEffect(()=>{
    // }, [])

    const checkForErrors = (formData:any) => {
        const newFormErrors:Record<string, string> = {}
        let hasError = false
        /* eslint-disable array-callback-return */
        Object.entries(formData).map(([key, value]) => {
            if (key in form_rules) {
                //if field validation fails
                if (!form_rules[key].condition(value)) {
                    newFormErrors[key] = form_rules[key].message
                    hasError = true
                }
            }
        })
        setFormErrors(newFormErrors)
        return hasError
    }

    return [checkForErrors, formErrors] as const
}
export default useFormValidate;
