import React, { useEffect, useState } from 'react'; import SmoothImage from 'react-smooth-image'; import { Avatar, Badge, Tooltip, useTheme } from '@mui/material'; import { useTranslation } from 'react-i18next'; import { SendReceiveIcon } from '../Icons'; import { apiClient } from '../../services/api'; import placeholder from './placeholder.json'; interface Props { nickname: string | null; smooth?: boolean; flipHorizontally?: boolean; style?: object; imageStyle?: object; statusColor?: 'primary' | 'secondary' | 'default' | 'error' | 'info' | 'success' | 'warning'; orderType?: number; tooltip?: string; tooltipPosition?: string; avatarClass?: string; onLoad?: () => void; } const RobotAvatar: React.FC = ({ nickname, orderType, statusColor, tooltip, tooltipPosition = 'right', smooth = false, flipHorizontally = false, style = {}, avatarClass = 'flippedSmallAvatar', imageStyle = {}, onLoad = () => {}, }) => { const { t } = useTranslation(); const theme = useTheme(); const [avatarSrc, setAvatarSrc] = useState(); useEffect(() => { if (nickname != null) { apiClient.fileImageUrl('/static/assets/avatars/' + nickname + '.png').then(setAvatarSrc); } }, [nickname]); const statusBadge = (
{orderType === 0 ? ( ) : ( )}
); const getAvatar = () => { if (smooth) { return (
); } else { return ( ); } }; const getAvatarWithBadges = () => { let component = getAvatar(); if (statusColor) { component = ( {component} ); } if (orderType !== undefined) { component = ( {component} ); } return component; }; return tooltip ? ( {getAvatarWithBadges()} ) : ( getAvatarWithBadges() ); }; export default RobotAvatar;