| 123456789101112131415161718192021222324252627282930313233343536373839 |
- 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)
- 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
- }
- }
|