//
//  PlayerView.swift
//  Pods
//
//  Created by Asti Manuka on 11/10/23.
//

import AVKit
import Foundation

import PRESTOplay

@available(tvOS 14.0, *)
@objc
public class PlayerView: UIView {

    // MARK: Lifecycle

    public override init(frame: CGRect) {
        super.init(frame: frame)
    }

    public required init?(coder _: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    // MARK: Public

    override public func layoutSubviews() {
        guard
            let playerId,
            let player = Repository.shared.players.get(key: playerId)
        else { return }
        player.updateSize(bounds)
    }

    override public func removeFromSuperview() {
        destroy()
        super.removeFromSuperview()
    }

    @objc
    public func setPlayerId(_ playerId: String) {
        self.playerId = playerId

        guard let player = Repository.shared.players.get(key: playerId)
        else { return }

        player.attachToView(self)
        player.updateSize(bounds)
    }

    // MARK: Private

    private var playerId: String?

    private func destroy() {
        guard
            let playerId,
            let player = Repository.shared.players.get(key: playerId)
        else { return }
        player.detachFromView()
    }
}
