mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-10-30 21:14:12 +00:00 
			
		
		
		
	use XMLSerializer for toMastoApiHtml - fixes #556
				
					
				
			the `inline` bit is not pretty, but does the job
This commit is contained in:
		
							parent
							
								
									265afa9097
								
							
						
					
					
						commit
						61c13241ba
					
				
					 1 changed files with 12 additions and 4 deletions
				
			
		|  | @ -6,7 +6,7 @@ | ||||||
| import { URL } from 'node:url'; | import { URL } from 'node:url'; | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import * as parse5 from 'parse5'; | import * as parse5 from 'parse5'; | ||||||
| import { Window, XMLSerializer } from 'happy-dom'; | import { Window, DocumentFragment, XMLSerializer } from 'happy-dom'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import type { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { intersperse } from '@/misc/prelude/array.js'; | import { intersperse } from '@/misc/prelude/array.js'; | ||||||
|  | @ -483,6 +483,8 @@ export class MfmService { | ||||||
| 
 | 
 | ||||||
| 		const doc = window.document; | 		const doc = window.document; | ||||||
| 
 | 
 | ||||||
|  | 		const body = doc.createElement('p'); | ||||||
|  | 
 | ||||||
| 		async function appendChildren(children: mfm.MfmNode[], targetElement: any): Promise<void> { | 		async function appendChildren(children: mfm.MfmNode[], targetElement: any): Promise<void> { | ||||||
| 			if (children) { | 			if (children) { | ||||||
| 				for (const child of await Promise.all(children.map(async (x) => await (handlers as any)[x.type](x)))) targetElement.appendChild(child); | 				for (const child of await Promise.all(children.map(async (x) => await (handlers as any)[x.type](x)))) targetElement.appendChild(child); | ||||||
|  | @ -661,7 +663,7 @@ export class MfmService { | ||||||
| 			}, | 			}, | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		await appendChildren(nodes, doc.body); | 		await appendChildren(nodes, body); | ||||||
| 
 | 
 | ||||||
| 		if (quoteUri !== null) { | 		if (quoteUri !== null) { | ||||||
| 			const a = doc.createElement('a'); | 			const a = doc.createElement('a'); | ||||||
|  | @ -675,9 +677,15 @@ export class MfmService { | ||||||
| 			quote.innerHTML += 'RE: '; | 			quote.innerHTML += 'RE: '; | ||||||
| 			quote.appendChild(a); | 			quote.appendChild(a); | ||||||
| 
 | 
 | ||||||
| 			doc.body.appendChild(quote); | 			body.appendChild(quote); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		return inline ? doc.body.innerHTML : `<p>${doc.body.innerHTML}</p>`; | 		let result = new XMLSerializer().serializeToString(body); | ||||||
|  | 
 | ||||||
|  | 		if (inline) { | ||||||
|  | 			result = result.replace(/^<p>/,'').replace(/<\/p>$/,''); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		return result; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue