import React, { ChangeEvent, useState } from 'react'; import FocusTrap from 'focus-trap-react'; import { Box, config, Input, Line, MenuItem, Modal, Overlay, OverlayBackdrop, OverlayCenter, Scroll, Text, } from 'folds'; import { MatrixEvent } from 'matrix-js-sdk'; import { useMatrixClient } from '../../../hooks/useMatrixClient'; import { stopPropagation } from '../../../utils/keyboard'; type Props = { mEvent: MatrixEvent; onClose: () => void; }; export function ForwardMessageDialog({ mEvent, onClose }: Props) { const mx = useMatrixClient(); const [query, setQuery] = useState(''); const [sentTo, setSentTo] = useState(null); const allRooms = mx .getRooms() .filter((r) => r.getMyMembership() === 'join' && !r.isSpaceRoom()) .sort((a, b) => (b.getLastActiveTimestamp() ?? 0) - (a.getLastActiveTimestamp() ?? 0)); const filtered = query ? allRooms.filter((r) => r.name.toLowerCase().includes(query.toLowerCase())) : allRooms; const forward = (roomId: string, roomName: string) => { const fwdContent: Record = { ...mEvent.getContent() }; delete fwdContent['m.relates_to']; // eslint-disable-next-line @typescript-eslint/no-explicit-any (mx as any).sendEvent(roomId, mEvent.getType(), fwdContent); setSentTo(roomName); setTimeout(onClose, 1200); }; return ( }> Forward message ) => setQuery(e.target.value)} /> {sentTo ? ( ✓ Forwarded to {sentTo} ) : ( {filtered.slice(0, 60).map((room) => ( forward(room.roomId, room.name)} > {room.name} ))} {filtered.length === 0 && ( No rooms found )} )} ); }