Loading web/src/hooks/useAdminHomePage.tsx 0 → 100644 +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 Loading
web/src/hooks/useAdminHomePage.tsx 0 → 100644 +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