RedditWebViewManager.swift 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import AppKit
  2. import WebKit
  3. @MainActor
  4. enum RedditWebViewManager {
  5. private static let processPool = WKProcessPool()
  6. static func makeConfiguration() -> WKWebViewConfiguration {
  7. let configuration = WKWebViewConfiguration()
  8. configuration.processPool = processPool
  9. configuration.websiteDataStore = .default()
  10. configuration.defaultWebpagePreferences.allowsContentJavaScript = true
  11. configuration.preferences.isElementFullscreenEnabled = true
  12. let boundaryScript = WKUserScript(
  13. source: RedditPostBoundaryStyle.injectionScript,
  14. injectionTime: .atDocumentEnd,
  15. forMainFrameOnly: true
  16. )
  17. configuration.userContentController.addUserScript(boundaryScript)
  18. return configuration
  19. }
  20. static func makeWebView() -> WKWebView {
  21. let webView = WKWebView(frame: .zero, configuration: makeConfiguration())
  22. webView.allowsBackForwardNavigationGestures = true
  23. webView.allowsMagnification = true
  24. webView.customUserAgent =
  25. "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"
  26. webView.underPageBackgroundColor = NSColor(
  27. red: 11.0 / 255.0,
  28. green: 14.0 / 255.0,
  29. blue: 20.0 / 255.0,
  30. alpha: 1.0
  31. )
  32. return webView
  33. }
  34. }