| 1234567891011121314151617181920212223242526272829303132333435 |
- import AppKit
- import WebKit
- @MainActor
- final class RedditWebViewStore {
- static let shared = RedditWebViewStore()
- private(set) var container: RedditWebViewContainer?
- private var isMediaPlaybackSuspended = false
- private init() {}
- func containerIfNeeded() -> RedditWebViewContainer {
- if let container {
- return container
- }
- let webView = RedditWebViewManager.makeWebView()
- let newContainer = RedditWebViewContainer(webView: webView)
- container = newContainer
- return newContainer
- }
- func suspendMediaPlaybackForWindowMinimize() {
- guard let webView = container?.webView, !isMediaPlaybackSuspended else { return }
- isMediaPlaybackSuspended = true
- webView.setAllMediaPlaybackSuspended(true, completionHandler: nil)
- }
- func resumeMediaPlaybackAfterWindowDeminiaturize() {
- guard let webView = container?.webView, isMediaPlaybackSuspended else { return }
- isMediaPlaybackSuspended = false
- webView.setAllMediaPlaybackSuspended(false, completionHandler: nil)
- }
- }
|