Add test for a generated embed on a reply
This commit is contained in:
		| @@ -24,14 +24,13 @@ function eventCanBeEdited(ev) { | ||||
|  | ||||
| /** | ||||
|  * @param {import("discord-api-types/v10").GatewayMessageCreateDispatchData} message | ||||
|  * IMPORTANT: This may not have all the normal fields! The API documentation doesn't provide possible types, just says it's all optional! | ||||
|  * Since I don't have a spec, I will have to capture some real traffic and add it as test cases... I hope they don't change anything later... | ||||
|  * @param {import("discord-api-types/v10").APIGuild} guild | ||||
|  * @param {import("../../matrix/api")} api simple-as-nails dependency injection for the matrix API | ||||
|  */ | ||||
| async function editToChanges(message, guild, api) { | ||||
| 	// If it is a user edit, allow deleting old messages (e.g. they might have removed text from an image). | ||||
| 	// If it is the system adding a generated embed to a message, don't delete old messages since the system only sends partial data. | ||||
| 	// Since an update in August 2024, the system always provides the full data of message updates. I'll leave in the old code since it won't cause problems. | ||||
|  | ||||
| 	const isGeneratedEmbed = !("content" in message) | ||||
|  | ||||
|   | ||||
| @@ -270,3 +270,44 @@ test("edit2changes: generated embed", async t => { | ||||
| 	t.equal(senderMxid, "@_ooye_cadence:cadence.moe") | ||||
| 	t.equal(called, 1) | ||||
| }) | ||||
|  | ||||
| test("edit2changes: generated embed on a reply", async t => { | ||||
| 	const {senderMxid, eventsToRedact, eventsToReplace, eventsToSend, promotions} = await editToChanges(data.message_update.embed_generated_on_reply, data.guild.general, {}) | ||||
| 	t.deepEqual(eventsToRedact, []) | ||||
| 	t.deepEqual(eventsToReplace, [{ | ||||
| 		oldID: "$UTqiL3Zj3FC4qldxRLggN1fhygpKl8sZ7XGY5f9MNbF", | ||||
| 		newContent: { | ||||
| 			$type: "m.room.message", | ||||
| 			// Unfortunately the edited message doesn't include the message_reference field. Fine. Whatever. It looks normal if you're using a good client. | ||||
| 			body: "> a Discord user: [Replied-to message content wasn't provided by Discord]" | ||||
| 				+ "\n\n* https://matrix.to/#/!BnKuBPCvyfOkhcUjEu:cadence.moe/$aLVZyiC3HlOu-prCSIaXlQl68I8leUdnPFiCwkgn6qM", | ||||
| 			format: "org.matrix.custom.html", | ||||
| 			formatted_body: "<mx-reply><blockquote><a href=\"https://matrix.to/#/!BnKuBPCvyfOkhcUjEu:cadence.moe/$aLVZyiC3HlOu-prCSIaXlQl68I8leUdnPFiCwkgn6qM\">In reply to</a> a Discord user<br>[Replied-to message content wasn't provided by Discord]</blockquote></mx-reply>* <a href=\"https://matrix.to/#/!BnKuBPCvyfOkhcUjEu:cadence.moe/$aLVZyiC3HlOu-prCSIaXlQl68I8leUdnPFiCwkgn6qM\">https://matrix.to/#/!BnKuBPCvyfOkhcUjEu:cadence.moe/$aLVZyiC3HlOu-prCSIaXlQl68I8leUdnPFiCwkgn6qM</a>", | ||||
| 			"m.mentions": {}, | ||||
| 			"m.new_content": { | ||||
| 				body: "https://matrix.to/#/!BnKuBPCvyfOkhcUjEu:cadence.moe/$aLVZyiC3HlOu-prCSIaXlQl68I8leUdnPFiCwkgn6qM", | ||||
| 				format: "org.matrix.custom.html", | ||||
| 				formatted_body: "<a href=\"https://matrix.to/#/!BnKuBPCvyfOkhcUjEu:cadence.moe/$aLVZyiC3HlOu-prCSIaXlQl68I8leUdnPFiCwkgn6qM\">https://matrix.to/#/!BnKuBPCvyfOkhcUjEu:cadence.moe/$aLVZyiC3HlOu-prCSIaXlQl68I8leUdnPFiCwkgn6qM</a>", | ||||
| 				"m.mentions": {}, | ||||
| 				msgtype: "m.text", | ||||
| 			}, | ||||
| 			"m.relates_to": { | ||||
| 				event_id: "$UTqiL3Zj3FC4qldxRLggN1fhygpKl8sZ7XGY5f9MNbF", | ||||
| 				rel_type: "m.replace", | ||||
| 			}, | ||||
| 			msgtype: "m.text", | ||||
| 		}, | ||||
| 	}]) | ||||
| 	t.deepEqual(eventsToSend, [{ | ||||
| 		$type: "m.room.message", | ||||
| 		msgtype: "m.notice", | ||||
| 		body: "| ## Matrix - Decentralised and secure communication https://matrix.to/" | ||||
| 			+ "\n| \n| You're invited to talk on Matrix. If you don't already have a client this link will help you pick one, and join the conversation. If you already have one, this link will help you join the conversation", | ||||
| 		format: "org.matrix.custom.html", | ||||
| 		formatted_body: `<blockquote><p><strong><a href="https://matrix.to/">Matrix - Decentralised and secure communication</a></strong>` | ||||
| 			+ `</p><p>You're invited to talk on Matrix. If you don't already have a client this link will help you pick one, and join the conversation. If you already have one, this link will help you join the conversation</p></blockquote>`, | ||||
| 		"m.mentions": {} | ||||
| 	}]) | ||||
| 	t.deepEqual(promotions, []) // TODO: it would be ideal to promote this to reaction_part = 0. this is OK to do because the main message won't have had any reactions yet. | ||||
| 	t.equal(senderMxid, "@_ooye_cadence:cadence.moe") | ||||
| }) | ||||
|   | ||||
							
								
								
									
										149
									
								
								test/data.js
									
									
									
									
									
								
							
							
						
						
									
										149
									
								
								test/data.js
									
									
									
									
									
								
							| @@ -1990,6 +1990,91 @@ module.exports = { | ||||
| 			edited_timestamp: null, | ||||
| 			flags: 0, | ||||
| 			components: [] | ||||
| 		}, | ||||
| 		embed_will_be_generated_on_reply: { | ||||
| 			type: 19, | ||||
| 			content: "https://matrix.to/#/!BnKuBPCvyfOkhcUjEu:cadence.moe/$aLVZyiC3HlOu-prCSIaXlQl68I8leUdnPFiCwkgn6qM", | ||||
| 			mentions: [], | ||||
| 			mention_roles: [], | ||||
| 			attachments: [], | ||||
| 			embeds: [ | ||||
| 				{ | ||||
| 					type: "link", | ||||
| 					url: "https://matrix.to/", | ||||
| 					title: "Matrix - Decentralised and secure communication", | ||||
| 					description: "You're invited to talk on Matrix. If you don't already have a client this link will help you pick one, and join the conversation. If you already have one, this link will help you join the conversation", | ||||
| 					reference_id: "1278002262400176128", | ||||
| 					thumbnail: { | ||||
| 						url: "https://matrix.org/blog/img/matrix-logo.png", | ||||
| 						proxy_url: "https://images-ext-1.discordapp.net/external/3yPmfN-_U_7Xn8hLSG77nY9IvdtITH0GPrB6OX3JjEI/https/matrix.org/blog/img/matrix-logo.png", | ||||
| 						width: 800, | ||||
| 						height: 400, | ||||
| 						placeholder: "OAgOBIComJeHeId/dXgAAAAAAA==", | ||||
| 						placeholder_version: 1 | ||||
| 					} | ||||
| 				} | ||||
| 			], | ||||
| 			timestamp: "2024-08-27T14:44:43.490000+00:00", | ||||
| 			edited_timestamp: null, | ||||
| 			flags: 0, | ||||
| 			components: [], | ||||
| 			id: "1278002262400176128", | ||||
| 			channel_id: "1100319550446252084", | ||||
| 			author: { | ||||
| 				id: "772659086046658620", | ||||
| 				username: "cadence.worm", | ||||
| 				avatar: "4b5c4b28051144e4c111f0113a0f1cf1", | ||||
| 				discriminator: "0", | ||||
| 				public_flags: 0, | ||||
| 				flags: 0, | ||||
| 				banner: null, | ||||
| 				accent_color: null, | ||||
| 				global_name: "cadence", | ||||
| 				avatar_decoration_data: null, | ||||
| 				banner_color: null, | ||||
| 				clan: null | ||||
| 			}, | ||||
| 			pinned: false, | ||||
| 			mention_everyone: false, | ||||
| 			tts: false, | ||||
| 			message_reference: { | ||||
| 				type: 0, | ||||
| 				channel_id: "1100319550446252084", | ||||
| 				message_id: "1278001833876525057", | ||||
| 				guild_id: "1100319549670301727" | ||||
| 			}, | ||||
| 			position: 0, | ||||
| 			referenced_message: { | ||||
| 				type: 0, | ||||
| 				content: "b", | ||||
| 				mentions: [], | ||||
| 				mention_roles: [], | ||||
| 				attachments: [], | ||||
| 				embeds: [], | ||||
| 				timestamp: "2024-08-27T14:43:01.322000+00:00", | ||||
| 				edited_timestamp: "2024-08-27T14:43:06.277000+00:00", | ||||
| 				flags: 0, | ||||
| 				components: [], | ||||
| 				id: "1278001833876525057", | ||||
| 				channel_id: "1100319550446252084", | ||||
| 				author: { | ||||
| 					id: "772659086046658620", | ||||
| 					username: "cadence.worm", | ||||
| 					avatar: "4b5c4b28051144e4c111f0113a0f1cf1", | ||||
| 					discriminator: "0", | ||||
| 					public_flags: 0, | ||||
| 					flags: 0, | ||||
| 					banner: null, | ||||
| 					accent_color: null, | ||||
| 					global_name: "cadence", | ||||
| 					avatar_decoration_data: null, | ||||
| 					banner_color: null, | ||||
| 					clan: null | ||||
| 				}, | ||||
| 				pinned: false, | ||||
| 				mention_everyone: false, | ||||
| 				tts: false | ||||
| 			} | ||||
| 		} | ||||
| 	}, | ||||
| 	pk_message: { | ||||
| @@ -3709,6 +3794,70 @@ module.exports = { | ||||
| 			], | ||||
| 			guild_id: "112760669178241024", | ||||
| 			id: "1210387798297682020" | ||||
| 		}, | ||||
| 		embed_generated_on_reply: { | ||||
| 			attachments: [], | ||||
| 			author: { | ||||
| 				avatar: "4b5c4b28051144e4c111f0113a0f1cf1", | ||||
| 				avatar_decoration_data: null, | ||||
| 				clan: null, | ||||
| 				discriminator: "0", | ||||
| 				global_name: "cadence", | ||||
| 				id: "772659086046658620", | ||||
| 				public_flags: 0, | ||||
| 				username: "cadence.worm" | ||||
| 			}, | ||||
| 			channel_id: "1100319550446252084", | ||||
| 			components: [], | ||||
| 			content: "https://matrix.to/#/!BnKuBPCvyfOkhcUjEu:cadence.moe/$aLVZyiC3HlOu-prCSIaXlQl68I8leUdnPFiCwkgn6qM", | ||||
| 			edited_timestamp: null, | ||||
| 			embeds: [ | ||||
| 				{ | ||||
| 					description: "You're invited to talk on Matrix. If you don't already have a client this link will help you pick one, and join the conversation. If you already have one, this link will help you join the conversation", | ||||
| 					reference_id: "1278002262400176128", | ||||
| 					thumbnail: { | ||||
| 						height: 400, | ||||
| 						placeholder: "OAgOBIComJeHeId/dXgAAAAAAA==", | ||||
| 						placeholder_version: 1, | ||||
| 						proxy_url: "https://images-ext-1.discordapp.net/external/3yPmfN-_U_7Xn8hLSG77nY9IvdtITH0GPrB6OX3JjEI/https/matrix.org/blog/img/matrix-logo.png", | ||||
| 						url: "https://matrix.org/blog/img/matrix-logo.png", | ||||
| 						width: 800 | ||||
| 					}, | ||||
| 					title: "Matrix - Decentralised and secure communication", | ||||
| 					type: "link", | ||||
| 					url: "https://matrix.to/" | ||||
| 				} | ||||
| 			], | ||||
| 			flags: 0, | ||||
| 			guild_id: "1100319549670301727", | ||||
| 			id: "1278002262400176128", | ||||
| 			member: { | ||||
| 				avatar: null, | ||||
| 				banner: null, | ||||
| 				communication_disabled_until: null, | ||||
| 				deaf: false, | ||||
| 				flags: 0, | ||||
| 				joined_at: "2023-04-25T07:17:03.696000+00:00", | ||||
| 				mute: false, | ||||
| 				nick: "worm", | ||||
| 				pending: false, | ||||
| 				premium_since: null, | ||||
| 				roles: [] | ||||
| 			}, | ||||
| 			mention_everyone: false, | ||||
| 			mention_roles: [], | ||||
| 			mentions: [], | ||||
| 			message_reference: { | ||||
| 				channel_id: "1100319550446252084", | ||||
| 				guild_id: "1100319549670301727", | ||||
| 				message_id: "1278001833876525057", | ||||
| 				type: 0 | ||||
| 			}, | ||||
| 			pinned: false, | ||||
| 			position: 0, | ||||
| 			timestamp: "2024-08-27T14:44:43.490000+00:00", | ||||
| 			tts: false, | ||||
| 			type: 19 | ||||
| 		} | ||||
| 	}, | ||||
| 	special_message: { | ||||
|   | ||||
| @@ -24,13 +24,15 @@ INSERT INTO sim (user_id, sim_name, localpart, mxid) VALUES | ||||
| ('111604486476181504', 'kyuugryphon', '_ooye_kyuugryphon', '@_ooye_kyuugryphon:cadence.moe'), | ||||
| ('1109360903096369153', 'amanda', '_ooye_amanda', '@_ooye_amanda:cadence.moe'), | ||||
| ('43d378d5-1183-47dc-ab3c-d14e21c3fe58', '_pk_zoego', '_ooye__pk_zoego', '@_ooye__pk_zoego:cadence.moe'), | ||||
| ('320067006521147393', 'papiophidian', '_ooye_papiophidian', '@_ooye_papiophidian:cadence.moe'); | ||||
| ('320067006521147393', 'papiophidian', '_ooye_papiophidian', '@_ooye_papiophidian:cadence.moe'), | ||||
| ('772659086046658620', 'cadence', '_ooye_cadence', '@_ooye_cadence:cadence.moe'); | ||||
|  | ||||
| INSERT INTO sim_proxy (user_id, proxy_owner_id, displayname) VALUES | ||||
| ('43d378d5-1183-47dc-ab3c-d14e21c3fe58', '196188877885538304', 'Azalea &flwr; 🌺'); | ||||
|  | ||||
| INSERT INTO sim_member (mxid, room_id, hashed_profile_content) VALUES | ||||
| ('@_ooye_bojack_horseman:cadence.moe', '!hYnGGlPHlbujVVfktC:cadence.moe', NULL); | ||||
| ('@_ooye_bojack_horseman:cadence.moe', '!hYnGGlPHlbujVVfktC:cadence.moe', NULL), | ||||
| ('@_ooye_cadence:cadence.moe', '!BnKuBPCvyfOkhcUjEu:cadence.moe', NULL); | ||||
|  | ||||
| INSERT INTO message_channel (message_id, channel_id) VALUES | ||||
| ('1106366167788044450', '122155380120748034'), | ||||
| @@ -57,7 +59,9 @@ INSERT INTO message_channel (message_id, channel_id) VALUES | ||||
| ('1207486471489986620', '1160894080998461480'), | ||||
| ('1210387798297682020', '112760669178241024'), | ||||
| ('1273204543739396116', '687028734322147344'), | ||||
| ('1273743950028607530', '1100319550446252084'); | ||||
| ('1273743950028607530', '1100319550446252084'), | ||||
| ('1278002262400176128', '1100319550446252084'), | ||||
| ('1278001833876525057', '1100319550446252084'); | ||||
|  | ||||
| INSERT INTO event_message (event_id, event_type, event_subtype, message_id, part, reaction_part, source) VALUES | ||||
| ('$X16nfVks1wsrhq4E9SSLiqrf2N8KD0erD0scZG7U5xg', 'm.room.message', 'm.text', '1126786462646550579', 0, 0, 1), | ||||
| @@ -94,7 +98,9 @@ INSERT INTO event_message (event_id, event_type, event_subtype, message_id, part | ||||
| ('$OEEK-Wam2FTh6J-6kVnnJ6KnLA_lLRnLTHatKKL62-Y', 'm.room.message', 'm.image', '1207486471489986620', 0, 0, 0), | ||||
| ('$mPSzglkCu-6cZHbYro0RW2u5mHvbH9aXDjO5FCzosc0', 'm.room.message', 'm.text', '1210387798297682020', 0, 0, 1), | ||||
| ('$qmyjr-ISJtnOM5WTWLI0fT7uSlqRLgpyin2d2NCglCU', 'm.room.message', 'm.text', '1273204543739396116', 0, 0, 0), | ||||
| ('$W1nsDhNIojWrcQOdnOD9RaEvrz2qyZErQoNhPRs1nK4', 'm.room.message', 'm.text', '1273743950028607530', 0, 0, 0); | ||||
| ('$W1nsDhNIojWrcQOdnOD9RaEvrz2qyZErQoNhPRs1nK4', 'm.room.message', 'm.text', '1273743950028607530', 0, 0, 0), | ||||
| ('$UTqiL3Zj3FC4qldxRLggN1fhygpKl8sZ7XGY5f9MNbF', 'm.room.message', 'm.text', '1278002262400176128', 0, 0, 1), | ||||
| ('$aLVZyiC3HlOu-prCSIaXlQl68I8leUdnPFiCwkgn6qM', 'm.room.message', 'm.text', '1278001833876525057', 0, 0, 1); | ||||
|  | ||||
| INSERT INTO file (discord_url, mxc_url) VALUES | ||||
| ('https://cdn.discordapp.com/attachments/497161332244742154/1124628646431297546/image.png', 'mxc://cadence.moe/qXoZktDqNtEGuOCZEADAMvhM'), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Cadence Ember
					Cadence Ember