Fix bug quoting reply to msg with blockquote
This commit is contained in:
parent
a56942cf14
commit
9e22101f66
2 changed files with 86 additions and 1 deletions
|
@ -348,7 +348,7 @@ async function eventToMessage(event, guild, di) {
|
||||||
const repliedToContent = repliedToEvent.content.formatted_body || repliedToEvent.content.body
|
const repliedToContent = repliedToEvent.content.formatted_body || repliedToEvent.content.body
|
||||||
const contentPreviewChunks = chunk(
|
const contentPreviewChunks = chunk(
|
||||||
repliedToContent.replace(/.*<\/mx-reply>/, "") // Remove everything before replies, so just use the actual message body
|
repliedToContent.replace(/.*<\/mx-reply>/, "") // Remove everything before replies, so just use the actual message body
|
||||||
.replace(/.*?<\/blockquote>/, "") // If the message starts with a blockquote, don't count it and use the message body afterwards
|
.replace(/<blockquote>.*?<\/blockquote>/, "") // If the message starts with a blockquote, don't count it and use the message body afterwards
|
||||||
.replace(/(?:\n|<br>)+/g, " ") // Should all be on one line
|
.replace(/(?:\n|<br>)+/g, " ") // Should all be on one line
|
||||||
.replace(/<span [^>]*data-mx-spoiler\b[^>]*>.*?<\/span>/g, "[spoiler]") // Good enough method of removing spoiler content. (I don't want to break out the HTML parser unless I have to.)
|
.replace(/<span [^>]*data-mx-spoiler\b[^>]*>.*?<\/span>/g, "[spoiler]") // Good enough method of removing spoiler content. (I don't want to break out the HTML parser unless I have to.)
|
||||||
.replace(/<[^>]+>/g, ""), 50) // Completely strip all other formatting.
|
.replace(/<[^>]+>/g, ""), 50) // Completely strip all other formatting.
|
||||||
|
|
|
@ -726,6 +726,91 @@ test("event2message: should avoid using blockquote contents as reply preview in
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test("event2message: should include a reply preview when message ends with a blockquote", async t => {
|
||||||
|
t.deepEqual(
|
||||||
|
await eventToMessage({
|
||||||
|
type: "m.room.message",
|
||||||
|
sender: "@cadence:cadence.moe",
|
||||||
|
content: {
|
||||||
|
msgtype: "m.text",
|
||||||
|
body: "> <@_ooye_cookie:cadence.moe> https://tootsuite.net/Warp-Gate2.gif\n> tanget: @ monster spawner\n> \n> **https://tootsuite.net/Warp-Gate2.gif**\n\naichmophobia",
|
||||||
|
format: "org.matrix.custom.html",
|
||||||
|
formatted_body: "<mx-reply><blockquote><a href=\"https://matrix.to/#/!fGgIymcYWOqjbSRUdV:cadence.moe/$uXM2I6w-XMtim14-OSZ_8Z2uQ6MDAZLT37eYIiEU6KQ?via=cadence.moe\">In reply to</a> <a href=\"https://matrix.to/#/@_ooye_cookie:cadence.moe\">@_ooye_cookie:cadence.moe</a><br><a href=\"https://tootsuite.net/Warp-Gate2.gif\">https://tootsuite.net/Warp-Gate2.gif</a><br />tanget: @ monster spawner<blockquote><strong><a href=\"https://tootsuite.net/Warp-Gate2.gif\">https://tootsuite.net/Warp-Gate2.gif</a></strong></blockquote></blockquote></mx-reply>aichmophobia",
|
||||||
|
"m.relates_to": {
|
||||||
|
"m.in_reply_to": {
|
||||||
|
event_id: "$uXM2I6w-XMtim14-OSZ_8Z2uQ6MDAZLT37eYIiEU6KQ"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
event_id: "$n6sg1X9rLeMzCYufJTRvaLzFeLQ-oEXjCWkHtRxcem4",
|
||||||
|
room_id: "!fGgIymcYWOqjbSRUdV:cadence.moe"
|
||||||
|
}, data.guild.general, {
|
||||||
|
api: {
|
||||||
|
getEvent: mockGetEvent(t, "!fGgIymcYWOqjbSRUdV:cadence.moe", "$uXM2I6w-XMtim14-OSZ_8Z2uQ6MDAZLT37eYIiEU6KQ", {
|
||||||
|
type: 'm.room.message',
|
||||||
|
sender: '@_ooye_cookie:cadence.moe',
|
||||||
|
content: {
|
||||||
|
'm.mentions': {},
|
||||||
|
msgtype: 'm.text',
|
||||||
|
body: 'https://tootsuite.net/Warp-Gate2.gif\n' +
|
||||||
|
'\n' +
|
||||||
|
'**https://tootsuite.net/Warp-Gate2.gif**',
|
||||||
|
format: 'org.matrix.custom.html',
|
||||||
|
formatted_body: '<a href="https://tootsuite.net/Warp-Gate2.gif">https://tootsuite.net/Warp-Gate2.gif</a><blockquote><strong><a href="https://tootsuite.net/Warp-Gate2.gif">https://tootsuite.net/Warp-Gate2.gif</a></strong></blockquote>'
|
||||||
|
},
|
||||||
|
unsigned: {
|
||||||
|
'm.relations': {
|
||||||
|
'm.replace': {
|
||||||
|
type: 'm.room.message',
|
||||||
|
room_id: '!fGgIymcYWOqjbSRUdV:cadence.moe',
|
||||||
|
sender: '@_ooye_cookie:cadence.moe',
|
||||||
|
content: {
|
||||||
|
'm.mentions': {},
|
||||||
|
msgtype: 'm.text',
|
||||||
|
body: '* https://tootsuite.net/Warp-Gate2.gif\n' +
|
||||||
|
'tanget: @ monster spawner\n' +
|
||||||
|
'\n' +
|
||||||
|
'**https://tootsuite.net/Warp-Gate2.gif**',
|
||||||
|
format: 'org.matrix.custom.html',
|
||||||
|
formatted_body: '* <a href="https://tootsuite.net/Warp-Gate2.gif">https://tootsuite.net/Warp-Gate2.gif</a><br>tanget: @ monster spawner<blockquote><strong><a href="https://tootsuite.net/Warp-Gate2.gif">https://tootsuite.net/Warp-Gate2.gif</a></strong></blockquote>',
|
||||||
|
'm.new_content': {
|
||||||
|
'm.mentions': {},
|
||||||
|
msgtype: 'm.text',
|
||||||
|
body: 'https://tootsuite.net/Warp-Gate2.gif\n' +
|
||||||
|
'tanget: @ monster spawner\n' +
|
||||||
|
'\n' +
|
||||||
|
'**https://tootsuite.net/Warp-Gate2.gif**',
|
||||||
|
format: 'org.matrix.custom.html',
|
||||||
|
formatted_body: '<a href="https://tootsuite.net/Warp-Gate2.gif">https://tootsuite.net/Warp-Gate2.gif</a><br>tanget: @ monster spawner<blockquote><strong><a href="https://tootsuite.net/Warp-Gate2.gif">https://tootsuite.net/Warp-Gate2.gif</a></strong></blockquote>'
|
||||||
|
},
|
||||||
|
'm.relates_to': {
|
||||||
|
rel_type: 'm.replace',
|
||||||
|
event_id: '$uXM2I6w-XMtim14-OSZ_8Z2uQ6MDAZLT37eYIiEU6KQ'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
event_id: '$onCj1MucuYz6-dFr30jcnnjSEDq50ouyEbRId1wtAa8',
|
||||||
|
user_id: '@_ooye_cookie:cadence.moe',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
user_id: '@_ooye_cookie:cadence.moe',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
messagesToDelete: [],
|
||||||
|
messagesToEdit: [],
|
||||||
|
messagesToSend: [{
|
||||||
|
username: "cadence [they]",
|
||||||
|
content: "> <:L1:1144820033948762203><:L2:1144820084079087647>Ⓜ️**_ooye_cookie**:"
|
||||||
|
+ "\n> https://tootsuite.net/Warp-Gate2.gif tanget: @..."
|
||||||
|
+ "\naichmophobia",
|
||||||
|
avatar_url: "https://matrix.cadence.moe/_matrix/media/r0/download/cadence.moe/azCAhThKTojXSZJRoWwZmhvU"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
test("event2message: editing a rich reply to a sim user", async t => {
|
test("event2message: editing a rich reply to a sim user", async t => {
|
||||||
const eventsFetched = []
|
const eventsFetched = []
|
||||||
t.deepEqual(
|
t.deepEqual(
|
||||||
|
|
Loading…
Reference in a new issue