| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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"
- webView.underPageBackgroundColor = NSColor(
- red: 11.0 / 255.0,
- green: 14.0 / 255.0,
- blue: 20.0 / 255.0,
- alpha: 1.0
- )
- return webView
- }
- }
|