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 (