diff --git a/packages/api/src/resolvers/article/index.ts b/packages/api/src/resolvers/article/index.ts index 0d46ef642..157e4b489 100644 --- a/packages/api/src/resolvers/article/index.ts +++ b/packages/api/src/resolvers/article/index.ts @@ -948,9 +948,13 @@ export const searchResolver = authorized< if (params.includeContent && r.content) { // convert html to the requested format const format = params.format || ArticleFormat.Html - const converter = contentConverter(format) - if (converter) { - r.content = converter(r.content, r.highlights) + try { + const converter = contentConverter(format) + if (converter) { + r.content = converter(r.content, r.highlights) + } + } catch (error) { + console.log('Error converting content', error) } } diff --git a/packages/api/src/utils/parser.ts b/packages/api/src/utils/parser.ts index ed57f5eb7..d3f05c1d2 100644 --- a/packages/api/src/utils/parser.ts +++ b/packages/api/src/utils/parser.ts @@ -609,11 +609,24 @@ export const htmlToHighlightedMarkdown = ( html: string, highlights?: Highlight[] ): string => { - if (!highlights) { + if (!highlights || highlights.length == 0) { + return nhm.translate(/* html */ html) + } + + let document: Document + + try { + document = parseHTML(html).document + + if (!document || !document.documentElement) { + // the html is invalid + throw new Error('Invalid html content') + } + } catch (err) { + console.log(err) return nhm.translate(/* html */ html) } - const document = parseHTML(html).document // wrap highlights in special tags highlights .filter((h) => h.type == 'HIGHLIGHT' && h.patch)