Adds reader mode shortcut (cmd+shift+R)

This commit is contained in:
James Magahern
2022-08-22 17:18:50 -07:00
parent 184396b1d8
commit 957ee045b4
4 changed files with 57 additions and 28 deletions

View File

@@ -295,32 +295,8 @@ class BrowserViewController: UIViewController
// Reader mode
documentControls.readabilityView.addAction(UIAction { [unowned self] _ in
tab.bridge.parseDocumentForReaderMode { string in
DispatchQueue.main.async {
documentControls.dismiss(animated: true, completion: nil)
if self.traitCollection.userInterfaceIdiom == .phone {
let readableViewController = ReaderViewController(readableHTMLString: string, baseURL: self.tab.bridge.webView.url)
readableViewController.title = self.tab.bridge.webView.title
readableViewController.darkModeEnabled = self.tab.bridge.darkModeEnabled
readableViewController.delegate = self
let navigationController = UINavigationController(rootViewController: readableViewController)
self.present(navigationController, animated: true, completion: nil)
} else {
let userActivity = NSUserActivity(activityType: SessionActivityType.ReaderWindow.rawValue)
userActivity.title = self.tab.title
userActivity.userInfo = [
ReaderUserActivityKeys.baseURL.rawValue : self.tab.bridge.webView.url ?? NSNull(),
ReaderUserActivityKeys.htmlString.rawValue : string,
]
let requestOptions = UIWindowScene.ActivationRequestOptions()
requestOptions.preferredPresentationStyle = .prominent
UIApplication.shared.requestSceneSessionActivation(nil, userActivity: userActivity, options: requestOptions)
}
}
}
documentControls.dismiss(animated: true, completion: nil)
showReaderWindow()
}, for: .touchUpInside)
// Archive
@@ -459,6 +435,32 @@ class BrowserViewController: UIViewController
#endif
}
internal func showReaderWindow() {
tab.bridge.parseDocumentForReaderMode { string in
DispatchQueue.main.async {
if self.traitCollection.userInterfaceIdiom == .phone {
let readableViewController = ReaderViewController(readableHTMLString: string, baseURL: self.tab.bridge.webView.url)
readableViewController.title = self.tab.bridge.webView.title
readableViewController.darkModeEnabled = self.tab.bridge.darkModeEnabled
readableViewController.delegate = self
let navigationController = UINavigationController(rootViewController: readableViewController)
self.present(navigationController, animated: true, completion: nil)
} else {
let userActivity = NSUserActivity(activityType: SessionActivityType.ReaderWindow.rawValue)
userActivity.title = self.tab.title
userActivity.userInfo = [
ReaderUserActivityKeys.baseURL.rawValue : self.tab.bridge.webView.url ?? NSNull(),
ReaderUserActivityKeys.htmlString.rawValue : string,
]
let requestOptions = UIWindowScene.ActivationRequestOptions()
requestOptions.preferredPresentationStyle = .prominent
UIApplication.shared.requestSceneSessionActivation(nil, userActivity: userActivity, options: requestOptions)
}
}
}
}
internal func updateLoadProgress(forWebView webView: WKWebView) {
if let loadError = tab.loadError {
toolbarController.urlBar.loadProgress = .error(error: loadError)