import React, { useState } from 'react'; import { Box, Icon, Icons, Modal, Overlay, OverlayBackdrop, OverlayCenter, Text, as, config, } from 'folds'; import { Room } from 'matrix-js-sdk'; import classNames from 'classnames'; import FocusTrap from 'focus-trap-react'; import { getMemberDisplayName } from '../../utils/room'; import { getMxIdLocalPart } from '../../utils/matrix'; import * as css from './RoomViewFollowing.css'; import { useMatrixClient } from '../../hooks/useMatrixClient'; import { useRoomLatestRenderedEvent } from '../../hooks/useRoomLatestRenderedEvent'; import { useRoomEventReaders } from '../../hooks/useRoomEventReaders'; import { EventReaders } from '../../components/event-readers'; import { stopPropagation } from '../../utils/keyboard'; export function RoomViewFollowingPlaceholder() { return
; } export type RoomViewFollowingProps = { room: Room; }; export const RoomViewFollowing = as<'div', RoomViewFollowingProps>( ({ className, room, ...props }, ref) => { const mx = useMatrixClient(); const [open, setOpen] = useState(false); const latestEvent = useRoomLatestRenderedEvent(room); const latestEventReaders = useRoomEventReaders(room, latestEvent?.getId()); const names = latestEventReaders .filter((readerId) => readerId !== mx.getUserId()) .map( (readerId) => getMemberDisplayName(room, readerId) ?? getMxIdLocalPart(readerId) ?? readerId ); const eventId = latestEvent?.getId(); return ( <> {eventId && (