import "./UserList.scss"; import React from "react"; import clsx from "clsx"; import { AppState, Collaborator } from "../types"; import { Tooltip } from "./Tooltip"; import { useExcalidrawActionManager } from "./App"; export const UserList: React.FC<{ className?: string; mobile?: boolean; collaborators: AppState["collaborators"]; }> = ({ className, mobile, collaborators }) => { const actionManager = useExcalidrawActionManager(); const uniqueCollaborators = new Map(); collaborators.forEach((collaborator, socketId) => { uniqueCollaborators.set( // filter on user id, else fall back on unique socketId collaborator.id || socketId, collaborator, ); }); const avatars = uniqueCollaborators.size > 0 && Array.from(uniqueCollaborators) .filter(([_, client]) => Object.keys(client).length !== 0) .map(([clientId, collaborator]) => { const avatarJSX = actionManager.renderAction("goToCollaborator", [ clientId, collaborator, ]); return mobile ? ( {avatarJSX} ) : ( {avatarJSX} ); }); return (
{avatars}
); };