/* eslint-disable react-hooks/exhaustive-deps */

import { useState, useEffect } from "react";
import { useRouter } from "next/router";
import Cookies from "js-cookie";
import { getPermissions } from "./services/public";
function useAuthProvider() {
  const userImageFromCookie = Cookies.get("userImage");
  const [Permission,setPermission] = useState()
  const fetch = async() => {
    let res = await getPermissions(userImageFromCookie)
    const datas = res?.data?.reduce((a: any, v: string) => {
      const keyWithoutSpacesOrSlashes = v.replace(/[\/\s]+/g, '');
      return { ...a, [keyWithoutSpacesOrSlashes]: v };
    }, {})

    
    setPermission(datas)
}

  const router = useRouter();
  const [loader, setLoader] = useState(false);
  useEffect(() => {
    fetch();
    if (router.pathname === "/login") {
      setLoader(false);
      return;
    }
    const handleStart = () => {
      setLoader(true);
    };
    const handleComplete = () => {
      setLoader(false);
    };
    if (router.pathname) {
      router.events.on("routeChangeStart", handleStart);
      router.events.on("routeChangeComplete", handleComplete);
      router.events.on("routeChangeError", handleComplete);
    }
    return () => {
      router.events.off("routeChangeStart", handleStart);
      router.events.off("routeChangeComplete", handleComplete);
      router.events.off("routeChangeError", handleComplete);
    };
  }, [router]);

  const handleLoader = (value: any) => {
    setLoader(value);
  };
  return {
    loader,
    Permission,
    handleLoader,
  };
}

export default useAuthProvider;
