diff --git a/src/app/features/room/room-pin-menu/RoomPinMenu.tsx b/src/app/features/room/room-pin-menu/RoomPinMenu.tsx index c3d259ae9..22f88cac0 100644 --- a/src/app/features/room/room-pin-menu/RoomPinMenu.tsx +++ b/src/app/features/room/room-pin-menu/RoomPinMenu.tsx @@ -1,6 +1,6 @@ /* eslint-disable react/destructuring-assignment */ import React, { forwardRef, MouseEventHandler, useCallback, useMemo, useRef } from 'react'; -import { MatrixEvent, RelationType, Room } from 'matrix-js-sdk'; +import { MatrixEvent, Room } from 'matrix-js-sdk'; import { RoomPinnedEventsEventContent } from 'matrix-js-sdk/lib/types'; import { Avatar, @@ -257,6 +257,7 @@ export const RoomPinMenu = forwardRef( msgType={event.getContent().msgtype ?? ''} ts={event.getTs()} getContent={getContent} + edited={!!event.replacingEvent} mediaAutoLoad={mediaAutoLoad} urlPreview={urlPreview} htmlReactParserOptions={htmlReactParserOptions} @@ -311,7 +312,7 @@ export const RoomPinMenu = forwardRef( displayName={displayName} msgType={mEvent.getContent().msgtype ?? ''} ts={mEvent.getTs()} - edited={!!editedEvent} + edited={!!editedEvent || !!mEvent.replacingEvent} getContent={getContent} mediaAutoLoad={mediaAutoLoad} urlPreview={urlPreview} diff --git a/src/app/hooks/useRoomEvent.ts b/src/app/hooks/useRoomEvent.ts index 3ca2449fa..c2715f1f1 100644 --- a/src/app/hooks/useRoomEvent.ts +++ b/src/app/hooks/useRoomEvent.ts @@ -1,4 +1,4 @@ -import { MatrixEvent, Room } from 'matrix-js-sdk'; +import { IEvent, MatrixEvent, Room } from 'matrix-js-sdk'; import { useCallback, useMemo } from 'react'; import to from 'await-to-js'; import { CryptoBackend } from 'matrix-js-sdk/lib/common-crypto/CryptoBackend'; @@ -12,6 +12,12 @@ const useFetchEvent = (room: Room, eventId: string) => { const evt = await mx.fetchRoomEvent(room.roomId, eventId); const mEvent = new MatrixEvent(evt); + if (evt.unsigned?.['m.relations'] && evt.unsigned?.['m.relations']['m.replace']) { + const replaceEvt = evt.unsigned?.['m.relations']['m.replace'] as IEvent; + const replaceEvent = new MatrixEvent(replaceEvt); + mEvent.makeReplaced(replaceEvent); + } + if (mEvent.isEncrypted() && mx.getCrypto()) { await to(mEvent.attemptDecryption(mx.getCrypto() as CryptoBackend)); }