import { MatrixEvent, MatrixEventEvent, MatrixEventHandlerMap } from 'matrix-js-sdk'; import React, { ReactNode, useEffect, useState } from 'react'; import { MessageEvent } from '../../../../types/matrix/room'; type EncryptedContentProps = { mEvent: MatrixEvent; children: () => ReactNode; }; export function EncryptedContent({ mEvent, children }: EncryptedContentProps) { const [, toggleEncrypted] = useState(mEvent.getType() === MessageEvent.RoomMessageEncrypted); useEffect(() => { toggleEncrypted(mEvent.getType() === MessageEvent.RoomMessageEncrypted); const handleDecrypted: MatrixEventHandlerMap[MatrixEventEvent.Decrypted] = (event) => { toggleEncrypted(event.getType() === MessageEvent.RoomMessageEncrypted); }; mEvent.on(MatrixEventEvent.Decrypted, handleDecrypted); return () => { mEvent.removeListener(MatrixEventEvent.Decrypted, handleDecrypted); }; }, [mEvent]); return <>{children()}; }