fix edits does not reflect in pinned messages (#2107)
authorAjay Bura <32841439+ajbura@users.noreply.github.com>
Mon, 10 Feb 2025 10:16:01 +0000 (21:16 +1100)
committerGitHub <noreply@github.com>
Mon, 10 Feb 2025 10:16:01 +0000 (21:16 +1100)
* fix pinned message edits does not reflect in pinned messages

* fix all pinned message show edited

* remove console log

src/app/features/room/room-pin-menu/RoomPinMenu.tsx
src/app/hooks/useRoomEvent.ts

index c3d259ae9c62927a93c22818111822c276e5aab4..2a35fc09ae77a4d86a32729a75a119ed89c3c057 100644 (file)
@@ -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<HTMLDivElement, RoomPinMenuProps>(
               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<HTMLDivElement, RoomPinMenuProps>(
                       displayName={displayName}
                       msgType={mEvent.getContent().msgtype ?? ''}
                       ts={mEvent.getTs()}
-                      edited={!!editedEvent}
+                      edited={!!editedEvent || !!mEvent.replacingEvent()}
                       getContent={getContent}
                       mediaAutoLoad={mediaAutoLoad}
                       urlPreview={urlPreview}
index 3ca2449faa4dcb4df6275a7c03a7c9af1d09ef60..c2715f1f158e89388994e88c7e6d5f58b4268998 100644 (file)
@@ -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));
     }