From 004c766588055e7f1c512501d49639c211630a2f Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Wed, 18 May 2022 10:55:23 -0700 Subject: [PATCH 1/2] If parsing fails, attempt adding wrappers to a document LinkedDom seems less forgiving and expects the outerHTML of a document, however older extension versions still send innerHTML. --- packages/api/src/utils/parser.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/api/src/utils/parser.ts b/packages/api/src/utils/parser.ts index aebc63430..2acc6a9a4 100644 --- a/packages/api/src/utils/parser.ts +++ b/packages/api/src/utils/parser.ts @@ -205,7 +205,8 @@ const applyHandlers = async ( export const parsePreparedContent = async ( url: string, preparedDocument: PreparedDocumentInput, - isNewsletter?: boolean + isNewsletter?: boolean, + allowRetry = true ): Promise => { const logRecord: ArticleParseLogRecord = { url: url, @@ -236,6 +237,10 @@ export const parsePreparedContent = async ( try { article = getReadabilityResult(url, document, dom, isNewsletter) + if (!article?.textContent && allowRetry) { + const newDocument = { ...preparedDocument, document: '' + preparedDocument.document + '' } + return parsePreparedContent(url, newDocument, isNewsletter, false) + } // Format code blocks // TODO: we probably want to move this type of thing From eadeccce810cc2878a38b3a1561f42c1d55a1ae4 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Wed, 18 May 2022 11:31:42 -0700 Subject: [PATCH 2/2] Linting fixes --- packages/api/src/utils/parser.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/api/src/utils/parser.ts b/packages/api/src/utils/parser.ts index 2acc6a9a4..c0fe90bc1 100644 --- a/packages/api/src/utils/parser.ts +++ b/packages/api/src/utils/parser.ts @@ -238,7 +238,10 @@ export const parsePreparedContent = async ( try { article = getReadabilityResult(url, document, dom, isNewsletter) if (!article?.textContent && allowRetry) { - const newDocument = { ...preparedDocument, document: '' + preparedDocument.document + '' } + const newDocument = { + ...preparedDocument, + document: '' + preparedDocument.document + '', + } return parsePreparedContent(url, newDocument, isNewsletter, false) }