import React, {ReactNode, useEffect, useRef, useState} from 'react';

import {toastWarn} from "../services/toaster";


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>>({})


    const checkForErrors = (formData:any) => {

        const newFormErrors:Record<string, string> = {}
        let hasError = false
        Object.entries(formData).map(([key, value]) => {


            if (key in form_rules) {

                //if field validation fails

                if (form_rules[key].condition(value) === false) {
                    newFormErrors[key] = form_rules[key].message
                    hasError = true
                }

            }

        })


        setFormErrors(newFormErrors)
        return hasError

    }


    return [checkForErrors, formErrors] as const


}

export default useFormValidate;