From b49aeca577f2121afeae1f8d4f4be274e6d130a0 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 21 Sep 2019 12:36:35 -0500 Subject: [PATCH] Moved page.html location information to ArticleRenderer --- .../Detail/DetailWebViewController.swift | 8 ++------ .../Article Rendering/ArticleRenderer.swift | 20 +++++++++++++------ .../DetailViewControllerWebViewProvider.swift | 6 +----- submodules/RSCore | 2 +- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Mac/MainWindow/Detail/DetailWebViewController.swift b/Mac/MainWindow/Detail/DetailWebViewController.swift index b81ca8712..263f6d4df 100644 --- a/Mac/MainWindow/Detail/DetailWebViewController.swift +++ b/Mac/MainWindow/Detail/DetailWebViewController.swift @@ -104,11 +104,7 @@ final class DetailWebViewController: NSViewController, WKUIDelegate { NotificationCenter.default.addObserver(self, selector: #selector(webInspectorEnabledDidChange(_:)), name: .WebInspectorEnabledDidChange, object: nil) #endif - let pageURL = Bundle.main.url(forResource: "page", withExtension: "html")! - let page = try! String(contentsOf: pageURL) - let baseURL = pageURL.deletingLastPathComponent() - - webView.loadHTMLString(page, baseURL: baseURL) + webView.loadHTMLString(ArticleRenderer.page.html, baseURL: ArticleRenderer.page.baseURL) } @@ -181,7 +177,7 @@ private extension DetailWebViewController { func reloadHTML() { let style = ArticleStylesManager.shared.currentStyle - let rendering: ArticleRendering + let rendering: ArticleRenderer.Rendering switch state { case .noSelection: diff --git a/Shared/Article Rendering/ArticleRenderer.swift b/Shared/Article Rendering/ArticleRenderer.swift index 5903b69f1..88af1aa11 100644 --- a/Shared/Article Rendering/ArticleRenderer.swift +++ b/Shared/Article Rendering/ArticleRenderer.swift @@ -11,10 +11,18 @@ import RSCore import Articles import Account -typealias ArticleRendering = (style: String, html: String) - struct ArticleRenderer { + typealias Rendering = (style: String, html: String) + typealias Page = (html: String, baseURL: URL) + + static var page: Page = { + let pageURL = Bundle.main.url(forResource: "page", withExtension: "html")! + let html = try! String(contentsOf: pageURL) + let baseURL = pageURL.deletingLastPathComponent() + return Page(html: html, baseURL: baseURL) + }() + private let article: Article? private let extractedArticle: ExtractedArticle? private let articleStyle: ArticleStyle @@ -38,22 +46,22 @@ struct ArticleRenderer { // MARK: - API - static func articleHTML(article: Article, extractedArticle: ExtractedArticle? = nil, style: ArticleStyle) -> ArticleRendering { + static func articleHTML(article: Article, extractedArticle: ExtractedArticle? = nil, style: ArticleStyle) -> Rendering { let renderer = ArticleRenderer(article: article, extractedArticle: extractedArticle, style: style) return (renderer.styleString(), renderer.articleHTML) } - static func multipleSelectionHTML(style: ArticleStyle) -> ArticleRendering { + static func multipleSelectionHTML(style: ArticleStyle) -> Rendering { let renderer = ArticleRenderer(article: nil, extractedArticle: nil, style: style) return (renderer.styleString(), renderer.multipleSelectionHTML) } - static func noSelectionHTML(style: ArticleStyle) -> ArticleRendering { + static func noSelectionHTML(style: ArticleStyle) -> Rendering { let renderer = ArticleRenderer(article: nil, extractedArticle: nil, style: style) return (renderer.styleString(), renderer.noSelectionHTML) } - static func noContentHTML(style: ArticleStyle) -> ArticleRendering { + static func noContentHTML(style: ArticleStyle) -> Rendering { let renderer = ArticleRenderer(article: nil, extractedArticle: nil, style: style) return (renderer.styleString(), renderer.noContentHTML) } diff --git a/iOS/Detail/DetailViewControllerWebViewProvider.swift b/iOS/Detail/DetailViewControllerWebViewProvider.swift index 1b3796bc1..35bf79b04 100644 --- a/iOS/Detail/DetailViewControllerWebViewProvider.swift +++ b/iOS/Detail/DetailViewControllerWebViewProvider.swift @@ -38,11 +38,7 @@ class DetailViewControllerWebViewProvider: NSObject, WKNavigationDelegate { webView.navigationDelegate = self queue.insert(webView, at: 0) - let pageURL = Bundle.main.url(forResource: "page", withExtension: "html")! - let page = try! String(contentsOf: pageURL) - let baseURL = pageURL.deletingLastPathComponent() - - webView.loadHTMLString(page, baseURL: baseURL) + webView.loadHTMLString(ArticleRenderer.page.html, baseURL: ArticleRenderer.page.baseURL) } diff --git a/submodules/RSCore b/submodules/RSCore index fd55bace3..960eaf603 160000 --- a/submodules/RSCore +++ b/submodules/RSCore @@ -1 +1 @@ -Subproject commit fd55bace3c2ef2c9e5af8110c0fd742e2135cad1 +Subproject commit 960eaf60336f592306fb1bf6f5a62800a9c5050f