From 83070dcf7e50b3e52b0a91c9a597607c8ad67d46 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Sat, 6 Jan 2024 19:00:57 +1300 Subject: [PATCH] Fix translating URL encoded mentions of sim users --- m2d/converters/event-to-message.js | 3 ++- m2d/converters/event-to-message.test.js | 32 +++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/m2d/converters/event-to-message.js b/m2d/converters/event-to-message.js index 9518bbc..1afd882 100644 --- a/m2d/converters/event-to-message.js +++ b/m2d/converters/event-to-message.js @@ -448,7 +448,8 @@ async function eventToMessage(event, guild, di) { } // Handling mentions of Discord users - input = input.replace(/("https:\/\/matrix.to\/#\/(@[^"]+)")>/g, (whole, attributeValue, mxid) => { + input = input.replace(/("https:\/\/matrix.to\/#\/((?:@|%40)[^"]+)")>/g, (whole, attributeValue, mxid) => { + mxid = decodeURIComponent(mxid) if (mxUtils.eventSenderIsFromDiscord(mxid)) { // Handle mention of an OOYE sim user by their mxid const userID = select("sim", "user_id", {mxid: mxid}).pluck().get() diff --git a/m2d/converters/event-to-message.test.js b/m2d/converters/event-to-message.test.js index e3a6905..4b30292 100644 --- a/m2d/converters/event-to-message.test.js +++ b/m2d/converters/event-to-message.test.js @@ -1663,6 +1663,38 @@ test("event2message: mentioning discord users works", async t => { ) }) + +test("event2message: mentioning discord users works when URL encoded", async t => { + t.deepEqual( + await eventToMessage({ + content: { + body: "Crunch God a sample message", + format: "org.matrix.custom.html", + formatted_body: `Crunch God a sample message`, + msgtype: "m.text" + }, + event_id: "$g07oYSZFWBkxohNEfywldwgcWj1hbhDzQ1sBAKvqOOU", + origin_server_ts: 1688301929913, + room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe", + sender: "@cadence:cadence.moe", + type: "m.room.message", + unsigned: { + age: 405299 + } + }), + { + ensureJoined: [], + messagesToDelete: [], + messagesToEdit: [], + messagesToSend: [{ + username: "cadence [they]", + content: "<@771520384671416320> a sample message", + avatar_url: undefined + }] + } + ) +}) + test("event2message: mentioning matrix users works", async t => { t.deepEqual( await eventToMessage({