import { listarMenusHistorico } from "@/requests/CRUD/Usuario/cadastrarUsuario";
import { usePathname } from "next/navigation";
import {
  Dispatch,
  ReactNode,
  SetStateAction,
  createContext,
  useContext,
  useEffect,
  useState,
} from "react";
import { useAuth } from "./authContext";

interface ILoadProps {
  children: ReactNode;
}

interface IHisotricoMenuContext {
  historicoMenu: any;
  setHistoricoMenu: Dispatch<SetStateAction<any[]>>;
  listarHistoricoMenuFunction: () => Promise<void>;
}

const HistoricoMenuContext = createContext({} as IHisotricoMenuContext);

export const HistoricoMenuProvider = ({ children }: ILoadProps) => {
  const { valuesSession } = useAuth();
  const { session } = valuesSession();
  const id_usuario = session?.id_usuario;
  const [historicoMenu, setHistoricoMenu] = useState<any[]>([]);
  const pathname = usePathname();

  useEffect(() => {
    if (pathname != "/") listarHistoricoMenuFunction();
  }, []);

  const listarHistoricoMenuFunction = async () => {
    return listarMenusHistorico(id_usuario).then((e) => {
      setHistoricoMenu(e);
    });
  };

  return (
    <HistoricoMenuContext.Provider
      value={{ historicoMenu, setHistoricoMenu, listarHistoricoMenuFunction }}
    >
      {children}
    </HistoricoMenuContext.Provider>
  );
};

export const useHistoricoMenuContext = () => {
  return useContext(HistoricoMenuContext);
};
