"use client"
import { AuthContext } from "@/modules/authentication/authContext"
import { getCookie, hasCookie } from "cookies-next"
import {
  createContext,
  ReactNode,
  useContext,
  useEffect,
  useState,
} from "react"
const authContext = createContext<AuthContext | null>(null)

const AuthProvider = ({ children }: { children: ReactNode }) => {
  const [userData, setUserData] = useState<AuthContext | null>(null)
  const cookie = hasCookie("nawaya_web_user")

  function updateUserData(image: string) {
    // @ts-ignore
    setUserData((prev) => ({
      ...prev,
      admin: {
        ...prev?.admin,
        image,
      },
    }))
  }

  useEffect(() => {
    const user = cookie ? JSON.parse(getCookie("nawaya_web_user")!).data : null
    setUserData(user)
  }, [cookie])
  const value: AuthContext | null = { ...userData!, updateUserData }
  return <authContext.Provider value={value}>{children}</authContext.Provider>
}
export function useAuth(): AuthContext {
  const user = useContext(authContext)!
  return user
}

export default AuthProvider
