import React, {useState, Fragment, useContext, useEffect} from "react"; import {Link, useLocation} from "react-router-dom"; import Button from "components/button/Button.jsx"; import Login from "components/login/Login.jsx"; import Darken from "components/darken/Darken.jsx"; import {UserContext} from "contexts/UserContext.jsx"; import {StateContext} from "contexts/StateContext.jsx"; import {refreshToken, logout} from "helpers/Auth.jsx"; import {getSubreactFromLocation, getInfoFromSubreact} from "helpers/Location.jsx"; import styles from "./NavBar.css" import logo from "assets/images/logo.png" import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; import {faUser, faPlay} from "@fortawesome/free-solid-svg-icons"; function AccountInfoItem({title, onClick, path, className}) { return (

{title}

); } function AccountInfo({user, setUser}) { // At this stage the user is logged in and we keep them logged in by periodically // refreshing our token. useEffect(() => { const interval = setInterval(() => { refreshToken(user, setUser); }, 58 * 60 * 1000); // refresh every 58 minutes, expires every sixty. return () => clearInterval(interval); }, []); const [active, setActive] = useState(false); return (
{setActive(!active);}}>

{user.username ?? "anonymous"}

{logout(setUser);}} />
); } function LoginStatus({loginActive, setLoginActive}) { const [user, setUser] = useContext(UserContext); // Not logged in, request a login. if (user == null) { return ( ); } return ; } function Account() { const [state, setState] = useContext(StateContext); const {loginActive} = state; const setLoginActive = (isActive) => {setState({...state, loginActive: isActive});}; return ( ); } function Banner({navBarActive, setNavBarActive, shouldToggleNavBar}) { return (
); } function Item({path, setNavBarActive}) { const location = useLocation(); const subreact = path.replace("/", ""); // "a", "m" etc const {icon, name} = getInfoFromSubreact(subreact); return ( setNavBarActive(false)}>

{name}

); } function ItemList({children, title}) { return (

{title}

{children && React.Children.count(children) > 0 ? children :

There's nothing here...

}
); } function Menu({navBarActive, setNavBarActive}) { return (
); } export default function NavBar() { const [active, setActive] = useState(false); return (
setActive(false)} className={styles.darken} />
); }