import React, { useState, useContext } from 'react'; import storage from '../../utils/storage'; import { getRegistryURL } from '../../utils/url'; import Button from '../../muiComponents/Button'; import AppContext from '../../App/AppContext'; import LoginDialog from '../LoginDialog'; import Search from '../Search'; import { NavBar, InnerNavBar, MobileNavBar, InnerMobileNavBar } from './styles'; import HeaderLeft from './HeaderLeft'; import HeaderRight from './HeaderRight'; import HeaderInfoDialog from './HeaderInfoDialog'; interface Props { withoutSearch?: boolean; } /* eslint-disable react/jsx-no-bind*/ const Header: React.FC = ({ withoutSearch }) => { const appContext = useContext(AppContext); const [isInfoDialogOpen, setOpenInfoDialog] = useState(); const [showMobileNavBar, setShowMobileNavBar] = useState(); const [showLoginModal, setShowLoginModal] = useState(false); if (!appContext) { throw Error('The app Context was not correct used'); } const { user, scope, setUser } = appContext; const logo = window.VERDACCIO_LOGO; /** * Logouts user * Required by:
*/ const handleLogout = () => { storage.removeItem('username'); storage.removeItem('token'); setUser(undefined); }; return ( <> setOpenInfoDialog(true)} onToggleLogin={() => setShowLoginModal(!showLoginModal)} onToggleMobileNav={() => setShowMobileNavBar(!showMobileNavBar)} username={user && user.username} withoutSearch={withoutSearch} /> setOpenInfoDialog(false)} registryUrl={getRegistryURL()} scope={scope} /> {showMobileNavBar && !withoutSearch && ( )} {!user && setShowLoginModal(false)} open={showLoginModal} />} ); }; export default Header;