"use client"; import { Image, Link, NavbarBrand, Navbar as NavbarBase, NavbarContent, } from "@nextui-org/react"; import NavbarButtonLink from "./NavbarButtonLink"; import { LogInIcon, NotebookPen } from "lucide-react"; import NextImage from "next/image"; import { useEffect, useState } from "react"; import { usePathname } from "next/navigation"; import { getCookie, hasCookie } from "@/helpers/cookie"; import { getCurrentJam } from "@/helpers/jam"; import { JamType } from "@/types/JamType"; import { UserType } from "@/types/UserType"; import MobileNavbarUser from "./MobileNavbarUser"; import ThemeToggle from "../theme-toggle"; import { getSelf } from "@/requests/user"; export default function MobileNavbar() { const pathname = usePathname(); const [jam, setJam] = useState<JamType | null>(); const [isInJam, setIsInJam] = useState<boolean>(); const [user, setUser] = useState<UserType>(); useEffect(() => { loadUser(); async function loadUser() { const jamResponse = await getCurrentJam(); const currentJam = jamResponse?.jam; setJam(currentJam); if (!hasCookie("token")) { setUser(undefined); return; } const response = await getSelf(); const user = await response.json(); if ( currentJam && user.jams.filter((jam: JamType) => jam.id == currentJam.id).length > 0 ) { setIsInJam(true); } else { setIsInJam(false); } if (response.status == 200) { setUser(user); } else { setUser(undefined); } } }, [pathname]); return ( <NavbarBase maxWidth="2xl" className="bg-[#222] p-1" isBordered height={80}> <NavbarContent justify="start" className="gap-10"> <NavbarBrand className="flex-grow-0"> <Link href="/" className="duration-500 ease-in-out transition-all transform hover:scale-110" > <Image as={NextImage} src="/images/D2J_Icon.png" className="min-w-[70px]" alt="Down2Jam logo" width={70} height={59.7} /> </Link> </NavbarBrand> </NavbarContent> <NavbarContent justify="end" className="gap-4"> <ThemeToggle /> {!user && ( <NavbarButtonLink icon={<LogInIcon />} name="Log In" href="/login" /> )} {!user && ( <NavbarButtonLink icon={<NotebookPen />} name="Sign Up" href="/signup" /> )} {user && ( <MobileNavbarUser user={user} isInJam={isInJam} setIsInJam={setIsInJam} jam={jam} /> )} </NavbarContent> </NavbarBase> ); }