import Defaults
import Foundation
import SwiftUI

final class ControlOverlaysModel: ObservableObject {
    static let shared = ControlOverlaysModel()
    @Published var presenting = false { didSet { handlePresentationChange() } }

    private lazy var controls = PlayerControlsModel.shared
    private lazy var player: PlayerModel! = PlayerModel.shared

    func toggle() {
        presenting.toggle()
        controls.objectWillChange.send()
    }

    private func handlePresentationChange() {
        guard let player = player else { return }
        player.backend.setNeedsNetworkStateUpdates(presenting && Defaults[.showMPVPlaybackStats])
    }
}