import AVKit

class RCTVideoPlayerViewController: AVPlayerViewController {
    
    var rctDelegate:RCTVideoPlayerViewControllerDelegate!
    
    // Optional paramters
    var preferredOrientation:String?
    var autorotate:Bool?
    
    func shouldAutorotate() -> Bool {

        if autorotate! || preferredOrientation == nil || (preferredOrientation!.lowercased() == "all") {
            return true
        }

        return false
    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        rctDelegate.videoPlayerViewControllerWillDismiss(playerViewController: self)
        rctDelegate.videoPlayerViewControllerDidDismiss(playerViewController: self)
    }

    #if !TARGET_OS_TV

    func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
        return .all
    }

    func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
        if preferredOrientation?.lowercased() == "landscape" {
            return .landscapeRight
        } else if preferredOrientation?.lowercased() == "portrait" {
            return .portrait
        } else {
            // default case
            let orientation = UIApplication.shared.statusBarOrientation
            return orientation
        }
    }
    #endif
}