m->d avoid using blockquote as reply preview
This commit is contained in:
		
							parent
							
								
									efa0171172
								
							
						
					
					
						commit
						aa263d3eb8
					
				
					 3 changed files with 53 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -210,7 +210,7 @@ async function eventToMessage(event, guild, di) {
 | 
			
		|||
				replyLine += `Ⓜ️**${senderName}**:`
 | 
			
		||||
			}
 | 
			
		||||
			const repliedToContent = repliedToEvent.content.formatted_body || repliedToEvent.content.body
 | 
			
		||||
			const contentPreviewChunks = chunk(repliedToContent.replace(/.*<\/mx-reply>/, "").replace(/(?:\n|<br>)+/g, " ").replace(/<[^>]+>/g, ""), 50)
 | 
			
		||||
			const contentPreviewChunks = chunk(repliedToContent.replace(/.*<\/mx-reply>/, "").replace(/.*?<\/blockquote>/, "").replace(/(?:\n|<br>)+/g, " ").replace(/<[^>]+>/g, ""), 50)
 | 
			
		||||
			const contentPreview = contentPreviewChunks.length > 1 ? contentPreviewChunks[0] + "..." : contentPreviewChunks[0]
 | 
			
		||||
			replyLine = `> ${replyLine}\n> ${contentPreview}\n`
 | 
			
		||||
		})()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -535,6 +535,55 @@ test("event2message: rich reply to a sim user", async t => {
 | 
			
		|||
	)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
test("event2message: should avoid using blockquote contents as reply preview in rich reply to a sim user", async t => {
 | 
			
		||||
	t.deepEqual(
 | 
			
		||||
		await eventToMessage({
 | 
			
		||||
		type: "m.room.message",
 | 
			
		||||
		sender: "@cadence:cadence.moe",
 | 
			
		||||
		content: {
 | 
			
		||||
			msgtype: "m.text",
 | 
			
		||||
			body: "> <@_ooye_kyuugryphon:cadence.moe> > well, you said this, so...\n> \n> that can't be true! there's no way :o\n\nI agree!",
 | 
			
		||||
			format: "org.matrix.custom.html",
 | 
			
		||||
			formatted_body: "<mx-reply><blockquote><a href=\"https://matrix.to/#/!fGgIymcYWOqjbSRUdV:cadence.moe/$Fxy8SMoJuTduwReVkHZ1uHif9EuvNx36Hg79cltiA04?via=cadence.moe\">In reply to</a> <a href=\"https://matrix.to/#/@_ooye_kyuugryphon:cadence.moe\">@_ooye_kyuugryphon:cadence.moe</a><br><blockquote>well, you said this, so...<br /></blockquote><br />that can't be true! there's no way :o</blockquote></mx-reply>I agree!",
 | 
			
		||||
			"m.relates_to": {
 | 
			
		||||
				"m.in_reply_to": {
 | 
			
		||||
					event_id: "$Fxy8SMoJuTduwReVkHZ1uHif9EuvNx36Hg79cltiA04"
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		event_id: "$BpGx8_vqHyN6UQDARPDU51ftrlRBhleutRSgpAJJ--g",
 | 
			
		||||
		room_id: "!fGgIymcYWOqjbSRUdV:cadence.moe"
 | 
			
		||||
		}, data.guild.general, {
 | 
			
		||||
			api: {
 | 
			
		||||
				getEvent: mockGetEvent(t, "!fGgIymcYWOqjbSRUdV:cadence.moe", "$Fxy8SMoJuTduwReVkHZ1uHif9EuvNx36Hg79cltiA04", {
 | 
			
		||||
					"type": "m.room.message",
 | 
			
		||||
					"sender": "@_ooye_kyuugryphon:cadence.moe",
 | 
			
		||||
					"content": {
 | 
			
		||||
						"m.mentions": {},
 | 
			
		||||
						"msgtype": "m.text",
 | 
			
		||||
						"body": "> well, you said this, so...\n\nthat can't be true! there's no way :o",
 | 
			
		||||
						"format": "org.matrix.custom.html",
 | 
			
		||||
						"formatted_body": "<blockquote>well, you said this, so...<br></blockquote><br>that can't be true! there's no way :o"
 | 
			
		||||
					}
 | 
			
		||||
				})
 | 
			
		||||
			}
 | 
			
		||||
		}),
 | 
			
		||||
		{
 | 
			
		||||
			messagesToDelete: [],
 | 
			
		||||
			messagesToEdit: [],
 | 
			
		||||
			messagesToSend: [{
 | 
			
		||||
				username: "cadence [they]",
 | 
			
		||||
				content: "> <:L1:1144820033948762203><:L2:1144820084079087647>https://discord.com/channels/112760669178241024/687028734322147344/1144865310588014633 <@111604486476181504>:"
 | 
			
		||||
					+ "\n> that can't be true! there's no way :o"
 | 
			
		||||
					+ "\nI agree!",
 | 
			
		||||
				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 => {
 | 
			
		||||
	const eventsFetched = []
 | 
			
		||||
	t.deepEqual(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										7
									
								
								notes.md
									
										
									
									
									
								
							
							
						
						
									
										7
									
								
								notes.md
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -2,14 +2,13 @@
 | 
			
		|||
 | 
			
		||||
## Known issues
 | 
			
		||||
 | 
			
		||||
- m->d attachments do not work
 | 
			
		||||
- m->d replying to a message that used a blockquote should avoid using the blockquote contents as the preview
 | 
			
		||||
- d->m emojis do not work at all (inline chat, single emoji size, reactions, bridged state)
 | 
			
		||||
- d->m embeds
 | 
			
		||||
- m->d code blocks have slightly too much spacing
 | 
			
		||||
- m->d some reactions don't work because of the variation selector
 | 
			
		||||
- d->m check whether I implemented deletions
 | 
			
		||||
- m->d deletions
 | 
			
		||||
- rooms will be set up even if the bridge does not have permission for them, then break when it restarts and tries to reach messages
 | 
			
		||||
- removing reactions
 | 
			
		||||
- rooms will be set up even if the bridge does not have permission for the channels, which breaks when it restarts and tries to fetch messages
 | 
			
		||||
	- test private threads as part of this
 | 
			
		||||
	- solution part 1: calculate the permissions to see if the bot should be able to do stuff
 | 
			
		||||
	- solution part 2: attempt a get messages request anyway before bridging a new room, just to make sure!
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue