Fix view source shows original event for an edited message (#377)
authorClament John <17064666+clmnin@users.noreply.github.com>
Tue, 15 Mar 2022 11:50:43 +0000 (17:20 +0530)
committerGitHub <noreply@github.com>
Tue, 15 Mar 2022 11:50:43 +0000 (17:20 +0530)
Signed-off-by: Clament John <cj@hackerlab.in>
fixes #376

When we click view source for an edited message we were showing
the original event (the unedited event) instead of the latest
edited event.

src/app/molecules/message/Message.jsx

index c011be79f0c11dac4337e3ab94d55cc17df3ac04..f5e3e2b22dda9f04d55c3c0543f02eea8d4dc01e 100644 (file)
@@ -469,6 +469,18 @@ function isMedia(mE) {
   );
 }
 
+// if editedTimeline has mEventId then pass editedMEvent else pass mEvent to openViewSource
+function handleOpenViewSource(mEvent, roomTimeline) {
+  const eventId = mEvent.getId();
+  const { editedTimeline } = roomTimeline ?? {};
+  let editedMEvent;
+  if (editedTimeline?.has(eventId)) {
+    const editedList = editedTimeline.get(eventId);
+    editedMEvent = editedList[editedList.length - 1];
+  }
+  openViewSource(editedMEvent !== undefined ? editedMEvent : mEvent);
+}
+
 const MessageOptions = React.memo(({
   roomTimeline, mEvent, edit, reply,
 }) => {
@@ -516,7 +528,7 @@ const MessageOptions = React.memo(({
             </MenuItem>
             <MenuItem
               iconSrc={CmdIC}
-              onClick={() => openViewSource(mEvent)}
+              onClick={() => handleOpenViewSource(mEvent, roomTimeline)}
             >
               View source
             </MenuItem>