/* eslint-disable jsx-a11y/click-events-have-key-events */ /* eslint-disable jsx-a11y/no-noninteractive-tabindex */ /* eslint-disable jsx-a11y/no-static-element-interactions */ import { useEffect, useState } from 'react' import Link from 'next/link' import dynamic from 'next/dynamic' import { useRouter } from 'next/router' import { redirectTo } from '@utils/Tools' import Fetch from '@utils/Fetch' import { Nullable, User, UserCache } from '@types' const DiscordAvatar = dynamic(() => import('@components/DiscordAvatar')) const Navbar: React.FC = ({ token }) => { const [userCache, setUserCache] = useState() const [navbarOpen, setNavbarOpen] = useState(false) const [dropdownOpen, setDropdownOpen] = useState(false) const [addDropdownOpen, setAddDropdownOpen] = useState(false) const [mobileAddDropdownOpen, setMobileAddDropdownOpen] = useState(false) const router = useRouter() const logged = userCache?.id && userCache.version === 2 const type: Nullable<'bot' | 'server'> = router.pathname.startsWith('/bots') ? 'bot' : router.pathname.startsWith('/servers') ? 'server' : null const dev = router.pathname.startsWith('/developers') useEffect(() => { try { if (localStorage.userCache) { setUserCache(token ? JSON.parse(localStorage.userCache) : null) } Fetch('/users/@me').then((data) => { if (data.code !== 200) return setUserCache( JSON.parse( (localStorage.userCache = JSON.stringify({ id: data.data.id, username: data.data.globalName, tag: data.data.tag, version: 2, })) ) ) }) } catch { setUserCache(null) } }, [token]) return ( <>
) } interface NavbarProps { token: string } export default Navbar