From 7756a34a5fb70bb3cb3ff49ec62d3420ab6c1e91 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Tue, 13 Feb 2024 22:27:55 +1300 Subject: [PATCH] m->d: Gracefully handle replies to redacted event --- m2d/converters/event-to-message.js | 2 + m2d/converters/event-to-message.test.js | 55 +++++++++++++++++++++++++ test/ooye-test-data.sql | 3 +- 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/m2d/converters/event-to-message.js b/m2d/converters/event-to-message.js index 1507ce3..7cbf2dc 100644 --- a/m2d/converters/event-to-message.js +++ b/m2d/converters/event-to-message.js @@ -509,6 +509,8 @@ async function eventToMessage(event, guild, di) { const fileReplyContentAlternative = attachmentEmojis.get(repliedToEvent.content.msgtype) if (fileReplyContentAlternative) { contentPreview = " " + fileReplyContentAlternative + } else if (repliedToEvent.unsigned?.redacted_because) { + contentPreview = " (in reply to a deleted message)" } else { const repliedToContent = repliedToEvent.content.formatted_body || repliedToEvent.content.body const contentPreviewChunks = chunk( diff --git a/m2d/converters/event-to-message.test.js b/m2d/converters/event-to-message.test.js index f116f8c..7d7aea9 100644 --- a/m2d/converters/event-to-message.test.js +++ b/m2d/converters/event-to-message.test.js @@ -1778,6 +1778,61 @@ test("event2message: with layered rich replies, the preview should only be the r ) }) +test("event2message: rich reply to a deleted event", async t => { + t.deepEqual( + await eventToMessage({ + type: "m.room.message", + sender: "@ampflower:matrix.org", + content: { + msgtype: "m.text", + body: "> <@ampflower:matrix.org> \n\nHuh it did the same thing here too", + format: "org.matrix.custom.html", + formatted_body: "
In reply to @ampflower:matrix.org
Huh it did the same thing here too", + "m.relates_to": { + "m.in_reply_to": { + event_id: "$f-noT-d-Eo_Xgpc05Ww89ErUXku4NwKWYGHLzWKo1kU" + } + } + }, + event_id: "$v_Gtr-bzv9IVlSLBO5DstzwmiDd-GSFaNfHX66IupV8", + room_id: "!TqlyQmifxGUggEmdBN:cadence.moe" + }, data.guild.general, { + api: { + getEvent: mockGetEvent(t, "!TqlyQmifxGUggEmdBN:cadence.moe", "$f-noT-d-Eo_Xgpc05Ww89ErUXku4NwKWYGHLzWKo1kU", { + type: "m.room.message", + sender: "@ampflower:matrix.org", + content: {}, + origin_server_ts: 1707798292953, + unsigned: { + redacted_because: { + type: "m.room.redaction", + room_id: "!TqlyQmifxGUggEmdBN:cadence.moe", + sender: "@_ooye_bot:cadence.moe", + content: {}, + redacts: "$uyOzmYhqcgF5i0bZb4MrAIEKEvzDOLgXdlRr1zfvWo0", + origin_server_ts: 1707798294565, + event_id: "$enCV-40Sut8llwALAV0T3qjwK7MvO9jgY9C4DHbxKXA", + user_id: "@_ooye_bot:cadence.moe", + }, + }, + user_id: "@ampflower:matrix.org" + }) + } + }), + { + ensureJoined: [], + messagesToDelete: [], + messagesToEdit: [], + messagesToSend: [{ + username: "Ampflower 🌺", + content: "> <:L1:1144820033948762203><:L2:1144820084079087647>Ⓜ️**Ampflower 🌺** (in reply to a deleted message)" + + "\nHuh it did the same thing here too", + avatar_url: "https://matrix.cadence.moe/_matrix/media/r0/download/cadence.moe/PRfhXYBTOalvgQYtmCLeUXko" + }] + } + ) +}) + test("event2message: raw mentioning discord users in plaintext body works", async t => { t.deepEqual( await eventToMessage({ diff --git a/test/ooye-test-data.sql b/test/ooye-test-data.sql index f455d9e..644f732 100644 --- a/test/ooye-test-data.sql +++ b/test/ooye-test-data.sql @@ -115,7 +115,8 @@ INSERT INTO member_cache (room_id, mxid, displayname, avatar_url) VALUES ('!BnKuBPCvyfOkhcUjEu:cadence.moe', '@cadence:cadence.moe', 'cadence [they]', 'mxc://cadence.moe/azCAhThKTojXSZJRoWwZmhvU'), ('!maggESguZBqGBZtSnr:cadence.moe', '@cadence:cadence.moe', 'cadence [they]', 'mxc://cadence.moe/azCAhThKTojXSZJRoWwZmhvU'), ('!CzvdIdUQXgUjDVKxeU:cadence.moe', '@cadence:cadence.moe', 'cadence [they]', 'mxc://cadence.moe/azCAhThKTojXSZJRoWwZmhvU'), -('!cBxtVRxDlZvSVhJXVK:cadence.moe', '@Milan:tchncs.de', 'Milan', NULL); +('!cBxtVRxDlZvSVhJXVK:cadence.moe', '@Milan:tchncs.de', 'Milan', NULL), +('!TqlyQmifxGUggEmdBN:cadence.moe', '@ampflower:matrix.org', 'Ampflower 🌺', 'mxc://cadence.moe/PRfhXYBTOalvgQYtmCLeUXko'); INSERT INTO lottie (sticker_id, mxc_url) VALUES ('860171525772279849', 'mxc://cadence.moe/ZtvvVbwMIdUZeovWVyGVFCeR');