diff --git a/src/app/features/room/message/ForwardMessageDialog.tsx b/src/app/features/room/message/ForwardMessageDialog.tsx index ef6f745e2..892a92ec2 100644 --- a/src/app/features/room/message/ForwardMessageDialog.tsx +++ b/src/app/features/room/message/ForwardMessageDialog.tsx @@ -47,8 +47,12 @@ import { recentForwardTargetsAtom, addRecentForwardTarget, } from '../../../state/recentForwardTargets'; -import { buildForwardContent, buildPlaintextAttachmentContent } from './forwardContent'; -import { useLocalRoomNames } from '../../../hooks/useRoomMeta'; +import { + buildForwardContent, + buildPlaintextAttachmentContent, + forwardEncryptionWarning, +} from './forwardContent'; +import { useLocalRoomNames, getLocalRoomName } from '../../../hooks/useRoomMeta'; type RoomRowProps = { room: Room; @@ -275,6 +279,14 @@ export function ForwardMessageDialog({ mEvent, onClose }: Props) { // Selection persists across query changes: a room selected then filtered out // of the rendered slice stays selected. const [selectedRoomIds, setSelectedRoomIds] = useState>(new Set()); + const encryptionWarning = forwardEncryptionWarning( + !!mx.getRoom(mEvent.getRoomId() ?? '')?.hasEncryptionStateEvent(), + [...selectedRoomIds] + .map((id) => mx.getRoom(id)) + .filter((r): r is Room => !!r && !r.hasEncryptionStateEvent()) + // The name the user sees (their own "Rename for me" name, if set). + .map((r) => getLocalRoomName(mx, r.roomId) ?? r.name), + ); const toggleRoom = useCallback((roomId: string) => { setSelectedRoomIds((prev) => { @@ -590,7 +602,13 @@ export function ForwardMessageDialog({ mEvent, onClose }: Props) { shrink="No" direction="Column" style={{ padding: `${config.space.S200} ${config.space.S400}` }} + gap="200" > + {encryptionWarning && ( + + {encryptionWarning} + + )}