Commit 73d8e176 authored by Omar Luna Hernández's avatar Omar Luna Hernández
Browse files

Se crea un hook que guarda la lógica de la página de inicio de un administrador

parent b868ec96
Loading
Loading
Loading
Loading
+59 −0
Original line number Diff line number Diff line
import { useEffect, useState } from "react";
import { AdminSelectedPanel } from "../constants/selected_panel";
import { useAuth } from "../context/auth_context";
import { Town } from "../infraestructure/entities/town";
import { useWindowShow } from "./useWindowShow";
import { useAdmin } from "./useAdmin";
import { UserRole } from "../constants/roles";
import { useTown } from "./useTown";

export const useAdminHomePage = () => {
  const [isLoading, setIsLoading] = useState(true);
  const [error, setError] = useState(false);
  const [errorMessage, setErrorMessage] = useState("");
  const [collapsed, setCollapsed] = useState(true);
  const {setIsWindowActive, isWindowActive} = useWindowShow();
  const [selectedPanel, setSelectedPanel] = useState<AdminSelectedPanel>(AdminSelectedPanel.PLACES);
  const {getTownById} = useTown();
  const [town, setTown] = useState<Town>();
  const {user, logout} = useAuth();
  const {getAdminInfo} = useAdmin();

  useEffect(() => {
    const checkAdminRole = async () => {
      const admin = await getAdminInfo();
      if(admin){
        if(admin.role!==UserRole.ADMIN){
          setError(true);
          setErrorMessage("No estas autorizado para acceder a esta página")
          setTimeout(() => {
            logout();
          }, 5000);
          return;
        }

        if(admin.idTown){
          const townFetched = await getTownById(admin.idTown);
          if(townFetched){
            setTown(townFetched);
          }
        }
      }
      setIsLoading(false);
    };
    checkAdminRole();
  },[user]);

  return {
    collapsed,
    isWindowActive,
    selectedPanel,
    setCollapsed,
    setSelectedPanel,
    setIsWindowActive,
    isLoading,
    error,
    errorMessage,
    town
  };
}
 No newline at end of file