mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 11:05:54 +01:00 
			
		
		
		
	fix: extend remoteAnchorToLocalProfile ap helper to handle markdown content
This commit is contained in:
		| @@ -367,13 +367,25 @@ Helpers.generateTitle = (html) => { | ||||
| 	return title; | ||||
| }; | ||||
|  | ||||
| Helpers.remoteAnchorToLocalProfile = async (content) => { | ||||
| 	const anchorRegex = /<a.*?href=['"](.+?)['"].*?>(.*?)<\/a>/ig; | ||||
| Helpers.remoteAnchorToLocalProfile = async (content, isMarkdown = false) => { | ||||
| 	let anchorRegex; | ||||
| 	if (isMarkdown) { | ||||
| 		anchorRegex = /\[(.*?)\]\((.+?)\)/ig; | ||||
| 	} else { | ||||
| 		anchorRegex = /<a.*?href=['"](.+?)['"].*?>(.*?)<\/a>/ig; | ||||
| 	} | ||||
|  | ||||
| 	const anchors = content.matchAll(anchorRegex); | ||||
| 	const urls = new Set(); | ||||
| 	const matches = []; | ||||
| 	for (const anchor of anchors) { | ||||
| 		const [match, url] = anchor; | ||||
| 		let match; | ||||
| 		let url; | ||||
| 		if (isMarkdown) { | ||||
| 			[match,, url] = anchor; | ||||
| 		} else { | ||||
| 			[match, url] = anchor; | ||||
| 		} | ||||
| 		matches.push([match, url]); | ||||
| 		urls.add(url); | ||||
| 	} | ||||
|   | ||||
| @@ -176,9 +176,10 @@ Mocks.post = async (objects) => { | ||||
| 		let edited = new Date(updated); | ||||
| 		edited = Number.isNaN(edited.valueOf()) ? undefined : edited; | ||||
|  | ||||
| 		const sourceContent = source && source.mediaType === 'text/markdown' ? source.content : undefined; | ||||
| 		let sourceContent = source && source.mediaType === 'text/markdown' ? source.content : undefined; | ||||
| 		if (sourceContent) { | ||||
| 			content = null; | ||||
| 			sourceContent = await activitypub.helpers.remoteAnchorToLocalProfile(sourceContent, true); | ||||
| 		} else if (content && content.length) { | ||||
| 			content = sanitize(content, sanitizeConfig); | ||||
| 			content = await activitypub.helpers.remoteAnchorToLocalProfile(content); | ||||
|   | ||||
| @@ -183,7 +183,6 @@ Notes.assert = async (uid, input, options = { skipChecks: false }) => { | ||||
| 				_activitypub: mainPost._activitypub, | ||||
| 			}), | ||||
| 			Notes.updateLocalRecipients(mainPid, { to, cc }), | ||||
| 			posts.attachments.update(mainPid, attachment), | ||||
| 		]); | ||||
| 		unprocessed.shift(); | ||||
|  | ||||
| @@ -193,6 +192,7 @@ Notes.assert = async (uid, input, options = { skipChecks: false }) => { | ||||
| 				id: tid, | ||||
| 				path: mainPost._activitypub.image, | ||||
| 			}) : null, | ||||
| 			posts.attachments.update(mainPid, attachment), | ||||
| 		]); | ||||
|  | ||||
| 		if (context) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user