import React from 'react'; import { useLayout, usePopup } from '../../../utils/hooks/'; import { PageStore } from '../../../utils/stores/'; import { HeaderConsumer, MemberConsumer, LinksConsumer } from '../../../utils/contexts/'; import { CircleIconButton, MaterialIcon, NavigationContentApp, NavigationMenuList, PopupTop, PopupMain, UserThumbnail } from '../../_shared'; import { HeaderThemeSwitcher } from './HeaderThemeSwitcher'; import { translateString } from '../../../utils/helpers/'; function headerPopupPages(user, popupNavItems, hasHeaderThemeSwitcher) { const pages = { main: null, }; if (user.is.anonymous) { pages.main = (
); } else { const NavMenus = []; function insertNavMenus(id, arr) { if (arr.length) { if (NavMenus.length) { NavMenus.push(
); } NavMenus.push(); } } insertNavMenus('top', popupNavItems.top); insertNavMenus('middle', popupNavItems.middle); insertNavMenus('bottom', popupNavItems.bottom); pages.main = (
{(user?.name || user?.email || user?.username || "User")} {NavMenus.length ? {NavMenus} : null}
); } if (hasHeaderThemeSwitcher) { pages['switch-theme'] = (
arrow_back Switch theme
); } return pages; } function UploadMediaButton({ user, links }) { const [popupContentRef, PopupContent, PopupTrigger] = usePopup(); const uploadMenuItems = [ { link: links.user.addMedia, icon: 'upload', text: translateString('Upload'), }, { link: '/record_screen', icon: 'videocam', text: translateString('Record Screen'), }, ]; return !user.is.anonymous && user.can.addMedia ? (
{translateString('Upload media')}
) : null; } function LoginButton({ user, link, hasHeaderThemeSwitcher }) { return user.is.anonymous && user.can.login ? (
{translateString('Sign in')}
) : null; } function RegisterButton({ user, link, hasHeaderThemeSwitcher }) { return user.is.anonymous && user.can.register ? (
{translateString('Register')}
) : null; } export function HeaderRight(props) { const { toggleMobileSearch } = useLayout(); const [popupContentRef, PopupContent, PopupTrigger] = usePopup(); return ( {(header) => ( {(user) => ( {(links) => (
{user.is.anonymous ? ( ) : ( )}
{PageStore.get('config-contents').header.right ? (
) : null}
)}
)}
)}
); }