import { css } from '@rocket.chat/css-in-js'; import { Box, Dropdown } from '@rocket.chat/fuselage'; import React, { memo, useRef, ReactElement } from 'react'; import { createPortal } from 'react-dom'; import { IUser } from '../../../definition/IUser'; import { UserStatus } from '../../components/UserStatus'; import UserAvatar from '../../components/avatar/UserAvatar'; import { useUser } from '../../contexts/UserContext'; import UserDropdown from './UserDropdown'; import { useDropdownVisibility } from './hooks/useDropdownVisibility'; const UserAvatarButton = function UserAvatarButton(): ReactElement { const user = useUser() as Required | undefined; const { status = !user ? 'online' : 'offline', username, avatarETag, statusText, } = user || { _id: '', username: 'Anonymous', status: 'online', statusText: '', }; // const allowAnonymousRead = useSetting('Accounts_AllowAnonymousRead'); const reference = useRef(null); const target = useRef(null); const { isVisible, toggle } = useDropdownVisibility({ reference, target }); return ( <> toggle()} className={css` cursor: pointer; `} data-qa='sidebar-avatar-button' > {user && isVisible && createPortal( toggle(false)} /> , document.body, )} ); }; export default memo(UserAvatarButton);