import * as React from 'react' import { Children, cloneElement, isValidElement, useEffect, useState, } from 'react' import PropTypes from 'prop-types' import { useTranslate, useGetIdentity } from 'react-admin' import { Tooltip, IconButton, Popover, MenuList, Avatar, Card, CardContent, Divider, Typography, } from '@material-ui/core' import { makeStyles } from '@material-ui/core/styles' import AccountCircle from '@material-ui/icons/AccountCircle' import config from '../config' import authProvider from '../authProvider' import { startEventStream } from '../eventStream' import { useDispatch } from 'react-redux' const useStyles = makeStyles((theme) => ({ user: {}, avatar: { width: theme.spacing(4), height: theme.spacing(4), }, username: { maxWidth: '11em', marginTop: '-0.7em', marginBottom: '-1em', }, usernameWrap: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis', }, })) const UserMenu = (props) => { const [anchorEl, setAnchorEl] = useState(null) const translate = useTranslate() const { loaded, identity } = useGetIdentity() const classes = useStyles(props) const dispatch = useDispatch() const { children, label, icon, logout } = props useEffect(() => { if (config.devActivityPanel) { authProvider .checkAuth() .then(() => startEventStream(dispatch)) .catch(() => {}) } }, [dispatch]) if (!logout && !children) return null const open = Boolean(anchorEl) const handleMenu = (event) => setAnchorEl(event.currentTarget) const handleClose = () => setAnchorEl(null) return (