| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import AppKit
- import WebKit
- @MainActor
- enum RedditWebViewManager {
- private static let processPool = WKProcessPool()
- static func makeConfiguration() -> WKWebViewConfiguration {
- let configuration = WKWebViewConfiguration()
- configuration.processPool = processPool
- configuration.websiteDataStore = .default()
- configuration.defaultWebpagePreferences.allowsContentJavaScript = true
- configuration.preferences.isElementFullscreenEnabled = true
- let boundaryScript = WKUserScript(
- source: RedditPostBoundaryStyle.injectionScript,
- injectionTime: .atDocumentEnd,
- forMainFrameOnly: true
- )
- configuration.userContentController.addUserScript(boundaryScript)
- let chromeScript = WKUserScript(
- source: RedditHomeChromeStyle.injectionScript,
- injectionTime: .atDocumentEnd,
- forMainFrameOnly: true
- )
- configuration.userContentController.addUserScript(chromeScript)
- let authChromeScript = WKUserScript(
- source: RedditAuthChromeStyle.injectionScript,
- injectionTime: .atDocumentEnd,
- forMainFrameOnly: true
- )
- configuration.userContentController.addUserScript(authChromeScript)
- return configuration
- }
- static func makeWebView() -> WKWebView {
- let webView = WKWebView(frame: .zero, configuration: makeConfiguration())
- webView.allowsBackForwardNavigationGestures = true
- webView.allowsMagnification = true
- webView.customUserAgent =
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15"
- applyUnderPageBackground(to: webView, isDarkMode: AppearanceManager.shared.isDarkMode)
- return webView
- }
- static func applyUnderPageBackground(to webView: WKWebView, isDarkMode: Bool) {
- webView.underPageBackgroundColor = AppearanceManager.webUnderPageBackgroundColor(isDarkMode: isDarkMode)
- }
- }
|