diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index 6ca7f8057b..97e97fdc1e 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -324,6 +324,10 @@ const getBaseEventId = (event: MatrixEvent) => { return (relatesTo && relatesTo["m.in_reply_to"]) ? relatesTo["m.in_reply_to"]["event_id"] : null; }; +const isEdit = (event: MatrixEvent) => { + if (event.getType() === "m.room.message" && event.getContent().hasOwnProperty("m.new_content")) return true; + return false; +} const dateSeparator = (event: MatrixEvent, prevEvent: MatrixEvent) => { const prevDate = prevEvent ? new Date(prevEvent.getTs()) : null; @@ -383,20 +387,21 @@ const createMessageBody = async (event: MatrixEvent, joined = false, isReply = f return `
+ `; }; @@ -405,6 +410,8 @@ const createHTML = async (events: MatrixEvent[], room: Room) => { let content = ""; let prevEvent = null; for (const event of events) { + // As the getContent of the edited event fetches the latest edit, there is no need to process edit events + if (isEdit(event)) continue; content += dateSeparator(event, prevEvent); if (event.getType() === "m.room.message") { @@ -430,7 +437,7 @@ const createHTML = async (events: MatrixEvent[], room: Room) => { }; const avatars = new Map(); -let zip; +let zip: any; const exportAsHTML = async (res: MatrixEvent[], room: Room) => { zip = new JSZip();