import React from 'react' import { useTranslation } from 'react-i18next' import { Dropdown, DropdownHeader, DropdownItem, DropdownMenu, DropdownToggle, } from '@/features/ui/components/bootstrap-5/dropdown-menu' import { getBackgroundColorForUserId } from '@/shared/utils/colors' import OLTooltip from '@/features/ui/components/ol/ol-tooltip' import MaterialIcon from '@/shared/components/material-icon' import { OnlineUser } from '@/features/ide-react/context/online-users-context' function OnlineUsersWidget({ onlineUsers, goToUser, }: { onlineUsers: OnlineUser[] goToUser: (user: OnlineUser) => void }) { const { t } = useTranslation() const shouldDisplayDropdown = onlineUsers.length >= 4 if (shouldDisplayDropdown) { return ( {onlineUsers.map((user, index) => (
  • goToUser(user)} >
  • ))}
    ) } else { return (
    {onlineUsers.map((user, index) => ( {/* OverlayTrigger won't fire unless UserIcon is wrapped in a span */} ))}
    ) } } function UserIcon({ user, showName, onClick, }: { user: OnlineUser showName?: boolean onClick?: (user: OnlineUser) => void }) { const backgroundColor = getBackgroundColorForUserId(user.user_id) function handleOnClick() { onClick?.(user) } const [character] = [...user.name] return ( // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions {character} {showName && user.name} ) } const DropDownToggleButton = React.forwardRef< HTMLButtonElement, { onlineUserCount: number; onClick: React.MouseEventHandler } >((props, ref) => { const { t } = useTranslation() return ( ) }) DropDownToggleButton.displayName = 'DropDownToggleButton' export default OnlineUsersWidget