diff --git a/frontend-plataforma-tutoriais/src/components/header/index.tsx b/frontend-plataforma-tutoriais/src/components/header/index.tsx index 9526048..4372dee 100644 --- a/frontend-plataforma-tutoriais/src/components/header/index.tsx +++ b/frontend-plataforma-tutoriais/src/components/header/index.tsx @@ -3,17 +3,17 @@ import { LuUser, LuMenu, LuSearch, LuLogOut, LuUsers, LuMail, LuGraduationCap, L import { useEffect, useState } from "react"; import { useNavigate, Link } from "react-router"; import { Button, NavLink, Offcanvas } from "react-bootstrap"; -import type { User, Workshop } from "../../types"; +import type { Workshop } from "../../types"; import type { Video } from "../../types"; import { CgSpinner } from "react-icons/cg"; import { useDebounce } from "../../hooks/useDebounce"; import { useGetVideos } from "../../hooks/useGetVideos"; -import { useGetVideosLength } from "../../hooks/useGetVideosLength"; import { useGetVideosSearch } from "../../hooks/useGetVideosSearch"; import { PiCheckCircleFill } from "react-icons/pi"; import { useGetWorkshopsSearch } from "../../hooks/useGetWorkshopsSearch"; import { imageSkeletonFadeStyle, onImageSkeletonLoad } from "../../utils/imageSkeleton"; import { motion, AnimatePresence } from "framer-motion"; +import { useGetCurrentUser } from "../../hooks/useGetCurrentUser"; export default function Header() { const [showMenu, setShowMenu] = useState(false); @@ -23,31 +23,28 @@ export default function Header() { const [searchCompleted, setSearchCompleted] = useState(false); const [videosSearched, setVideosSearched] = useState([]); const [workshopsSearched, setWorkshopsSearched] = useState([]); - const user = JSON.parse(localStorage.getItem("user") || "{}") as User; - const isAdmin = user.role_id === 1; const debouncedSearch = useDebounce(search, 500); const [showDropdown, setShowDropdown] = useState(false); const { getVideos } = useGetVideos(); - const { getVideosLength } = useGetVideosLength(); const { getVideosSearch } = useGetVideosSearch(); const { getWorkshopsSearch } = useGetWorkshopsSearch(); - const [videosStats, setVideosStats] = useState({ - videos: 0, - videosWatched: 0 - }); - + const { getCurrentUser } = useGetCurrentUser(); + const [role, setRole] = useState(0); + const [videosWatched, setVideosWatched] = useState(0); + const [videosCount, setVideosCount] = useState(0); + const navigate = useNavigate(); - + useEffect(() => { - if (isAdmin) return; - - const fetchProgressVideos = async () => { - const videosLengthData = await getVideosLength(); - if ("videos" in videosLengthData) { - setVideosStats(videosLengthData as { videos: number, videosWatched: number }); - } + const fetchAll = async () => { + const videosWatched = localStorage.getItem("videosWatched"); + setVideosWatched(videosWatched ? parseInt(videosWatched) : 0); + const videosCount = localStorage.getItem("videosCount"); + setVideosCount(videosCount ? parseInt(videosCount) : 0); + const userData = await getCurrentUser(); + setRole(userData.data.role_id); }; - fetchProgressVideos(); + fetchAll(); }, []); const handleCloseMenu = () => setShowMenu(false); @@ -132,7 +129,13 @@ export default function Header() { - Logo + Logo @@ -150,7 +153,7 @@ export default function Header() {
  • Workshops
  • - {isAdmin && ( + {role === 1 && (
  • Utilizadores
  • @@ -161,10 +164,10 @@ export default function Header() { - {!isAdmin && videosStats.videos > 0 && ( + {role !== 1 && videosCount > 0 && (
    Vídeos assistidos - {videosStats.videosWatched}/{videosStats.videos} + {videosWatched}/{videosCount}
    )} @@ -177,11 +180,11 @@ export default function Header() {