import React from 'react'; import classNames from 'classnames'; import { Avatar, AvatarFallback, AvatarImage, Box, Header, Icon, IconButton, Icons, MenuItem, Scroll, Text, as, config, } from 'folds'; import { Room, RoomMember } from 'matrix-js-sdk'; import { useRoomEventReaders } from '../../hooks/useRoomEventReaders'; import { getMemberDisplayName } from '../../utils/room'; import { getMxIdLocalPart } from '../../utils/matrix'; import * as css from './EventReaders.css'; import { useMatrixClient } from '../../hooks/useMatrixClient'; import colorMXID from '../../../util/colorMXID'; import { openProfileViewer } from '../../../client/action/navigation'; export type EventReadersProps = { room: Room; eventId: string; requestClose: () => void; }; export const EventReaders = as<'div', EventReadersProps>( ({ className, room, eventId, requestClose, ...props }, ref) => { const mx = useMatrixClient(); const latestEventReaders = useRoomEventReaders(room, eventId); const followingMembers = latestEventReaders .map((readerId) => room.getMember(readerId)) .filter((member) => member) as RoomMember[]; const getName = (member: RoomMember) => getMemberDisplayName(room, member.userId) ?? getMxIdLocalPart(member.userId) ?? member.userId; return (
Seen by
{followingMembers.map((member) => { const name = getName(member); const avatarUrl = member.getAvatarUrl( mx.baseUrl, 100, 100, 'crop', undefined, false ); return ( { requestClose(); openProfileViewer(member.userId, room.roomId); }} before={ {avatarUrl ? ( ) : ( {name[0]} )} } > {name} ); })}
); } );