From e73de60d770e6c47cda1d2d86c4f1587bfeb3c77 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Sat, 28 Oct 2023 00:37:20 +1300 Subject: [PATCH] m->d: Strip colons from user mentions --- m2d/converters/event-to-message.js | 4 ++++ m2d/converters/event-to-message.test.js | 32 ++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/m2d/converters/event-to-message.js b/m2d/converters/event-to-message.js index 11f5fc4..7082fbb 100644 --- a/m2d/converters/event-to-message.js +++ b/m2d/converters/event-to-message.js @@ -401,6 +401,10 @@ async function eventToMessage(event, guild, di) { return `${attributeValue} data-channel-id="${channelID}">` }) + // Stripping colons after mentions + input = input.replace(/( data-user-id.*?<\/a>):?/g, "$1") + input = input.replace(/("https:\/\/matrix.to.*?<\/a>):?/g, "$1") + // Element adds a bunch of
before but doesn't render them. I can't figure out how this even works in the browser, so let's just delete those. input = input.replace(/(?:\n|
\s*)*<\/blockquote>/g, "") diff --git a/m2d/converters/event-to-message.test.js b/m2d/converters/event-to-message.test.js index afeda31..f564906 100644 --- a/m2d/converters/event-to-message.test.js +++ b/m2d/converters/event-to-message.test.js @@ -1556,7 +1556,7 @@ test("event2message: mentioning discord users works", async t => { msgtype: "m.text", body: "wrong body", format: "org.matrix.custom.html", - formatted_body: `I'm just testing mentions` + formatted_body: `I'm just extremity testing mentions` }, event_id: "$g07oYSZFWBkxohNEfywldwgcWj1hbhDzQ1sBAKvqOOU", origin_server_ts: 1688301929913, @@ -1639,6 +1639,36 @@ test("event2message: mentioning bridged rooms works", async t => { ) }) +test("event2message: colon after mentions is stripped", async t => { + t.deepEqual( + await eventToMessage({ + content: { + msgtype: "m.text", + body: "wrong body", + format: "org.matrix.custom.html", + formatted_body: `extremity: hey, I'm just : testing mentions` + }, + event_id: "$g07oYSZFWBkxohNEfywldwgcWj1hbhDzQ1sBAKvqOOU", + origin_server_ts: 1688301929913, + room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe", + sender: "@cadence:cadence.moe", + type: "m.room.message", + unsigned: { + age: 405299 + } + }), + { + messagesToDelete: [], + messagesToEdit: [], + messagesToSend: [{ + username: "cadence [they]", + content: "<@114147806469554185> hey, I'm just [▲]() testing mentions", + avatar_url: undefined + }] + } + ) +}) + test("event2message: caches the member if the member is not known", async t => { let called = 0 t.deepEqual(