Skip to content

Commit 9f8e973

Browse files
committed
Re-inject feature scripts on navigation change
1 parent 9239595 commit 9f8e973

File tree

1 file changed

+33
-18
lines changed

1 file changed

+33
-18
lines changed

devdocs-macos/DocumentationViewController.swift

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@ public extension Notification.Name {
1010
rawValue: "DocumentationViewControllerViewerStateDidChangeNotification")
1111
}
1212

13-
class DocumentationViewController:
14-
NSViewController,
15-
WKNavigationDelegate
16-
{
13+
class DocumentationViewController: NSViewController {
1714

1815
enum ViewerState {
1916
case blank
@@ -68,20 +65,7 @@ class DocumentationViewController:
6865
userContentController.addUserScript(integration)
6966
}
7067

71-
if let pageObserverScript = readUserScript("page-observer") {
72-
let pageObserver = WKUserScript(source: pageObserverScript, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
73-
userContentController.addUserScript(pageObserver)
74-
}
75-
76-
if let pageSearchScript = readUserScript("page-search") {
77-
let pageSearch = WKUserScript(source: pageSearchScript, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
78-
userContentController.addUserScript(pageSearch)
79-
}
80-
81-
if let uiSettingsScript = readUserScript("ui-settings") {
82-
let uiSettings = WKUserScript(source: uiSettingsScript, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
83-
userContentController.addUserScript(uiSettings)
84-
}
68+
addFeatureScripts(userContentController)
8569

8670
webView = WKWebView.init(frame: .zero, configuration: config)
8771
webView.translatesAutoresizingMaskIntoConstraints = false
@@ -154,6 +138,29 @@ class DocumentationViewController:
154138
}
155139
}
156140

141+
private func addFeatureScripts(_ controller: WKUserContentController) {
142+
if let pageObserverScript = readUserScript("page-observer") {
143+
let pageObserver = WKUserScript(source: pageObserverScript,
144+
injectionTime: .atDocumentEnd,
145+
forMainFrameOnly: true)
146+
controller.addUserScript(pageObserver)
147+
}
148+
149+
if let pageSearchScript = readUserScript("page-search") {
150+
let pageSearch = WKUserScript(source: pageSearchScript,
151+
injectionTime: .atDocumentEnd,
152+
forMainFrameOnly: true)
153+
controller.addUserScript(pageSearch)
154+
}
155+
156+
if let uiSettingsScript = readUserScript("ui-settings") {
157+
let uiSettings = WKUserScript(source: uiSettingsScript,
158+
injectionTime: .atDocumentEnd,
159+
forMainFrameOnly: true)
160+
controller.addUserScript(uiSettings)
161+
}
162+
}
163+
157164
private func readUserScript(_ name: String) -> String? {
158165
guard let scriptPath = Bundle.main.path(forResource: name, ofType: "js", inDirectory: "user-scripts") else {
159166
return nil
@@ -218,6 +225,14 @@ extension DocumentationViewController: WKUIDelegate {
218225
}
219226
}
220227

228+
// MARK:- WKNavigationDelegate
229+
extension DocumentationViewController: WKNavigationDelegate {
230+
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
231+
let ucc = webView.configuration.userContentController
232+
addFeatureScripts(ucc)
233+
}
234+
}
235+
221236
// MARK:- WKScriptMessageHandler
222237
extension DocumentationViewController: WKScriptMessageHandler {
223238
func userContentController(_ userContentController: WKUserContentController,

0 commit comments

Comments
 (0)