RedditWebViewStore.swift 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import AppKit
  2. import WebKit
  3. @MainActor
  4. final class RedditWebViewStore {
  5. static let shared = RedditWebViewStore()
  6. private(set) var container: RedditWebViewContainer?
  7. private var isMediaPlaybackSuspended = false
  8. private init() {}
  9. func containerIfNeeded() -> RedditWebViewContainer {
  10. if let container {
  11. return container
  12. }
  13. let webView = RedditWebViewManager.makeWebView()
  14. let newContainer = RedditWebViewContainer(webView: webView)
  15. container = newContainer
  16. return newContainer
  17. }
  18. func suspendMediaPlaybackForWindowMinimize() {
  19. guard let webView = container?.webView, !isMediaPlaybackSuspended else { return }
  20. isMediaPlaybackSuspended = true
  21. webView.setAllMediaPlaybackSuspended(true, completionHandler: nil)
  22. }
  23. func resumeMediaPlaybackAfterWindowDeminiaturize() {
  24. guard let webView = container?.webView, isMediaPlaybackSuspended else { return }
  25. isMediaPlaybackSuspended = false
  26. webView.setAllMediaPlaybackSuspended(false, completionHandler: nil)
  27. }
  28. }