From cf59733ca1b9ecfd89937eec97d2170b37650a7a Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 3 Oct 2019 21:06:47 -0500 Subject: [PATCH] Fix article extractor error handling and recovery for when Mercury can't process a page --- Shared/Article Extractor/ArticleExtractor.swift | 6 +++++- iOS/SceneCoordinator.swift | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Shared/Article Extractor/ArticleExtractor.swift b/Shared/Article Extractor/ArticleExtractor.swift index 281fe601d..bd2dfcd78 100644 --- a/Shared/Article Extractor/ArticleExtractor.swift +++ b/Shared/Article Extractor/ArticleExtractor.swift @@ -81,7 +81,11 @@ class ArticleExtractor { self.state = .complete DispatchQueue.main.async { - self.delegate?.articleExtractionDidComplete(extractedArticle: self.article!) + if self.article?.content == nil { + self.delegate?.articleExtractionDidFail(with: URLError(.cannotDecodeContentData)) + } else { + self.delegate?.articleExtractionDidComplete(extractedArticle: self.article!) + } } } catch { self.state = .failedToParse diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index e78178057..7170a21f5 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -963,6 +963,7 @@ extension SceneCoordinator: UINavigationControllerDelegate { extension SceneCoordinator: ArticleExtractorDelegate { func articleExtractionDidFail(with: Error) { + stopArticleExtractor() articleViewController?.articleExtractorButtonState = .error }