//
//  GalleryPlayerViewController.swift
//  Tusker
//
//  Created by Shadowfacts on 6/21/20.
//  Copyright © 2020 Shadowfacts. All rights reserved.
//

import UIKit
import AVKit
import Pachyderm

class GalleryPlayerViewController: UIViewController {

    let playerVC = AVPlayerViewController()
    
    var attachment: Attachment!
    
    private var isFirstAppearance = true
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.backgroundColor = .black
        
        playerVC.allowsPictureInPicturePlayback = true
        
        playerVC.view.translatesAutoresizingMaskIntoConstraints = false
        addChild(playerVC)
        playerVC.didMove(toParent: self)
        view.addSubview(playerVC.view)
        
        NSLayoutConstraint.activate([
            playerVC.view.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
            playerVC.view.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor),
            playerVC.view.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
            playerVC.view.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
        ])
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        
        // starting while audio is already playing from another app often takes nearly a second,
        // so do it on a background thread as to not block the UI
        DispatchQueue.global(qos: .userInitiated).async {
            AudioSessionHelper.enable()
            AudioSessionHelper.setVideoPlayback()
            
            DispatchQueue.main.async {
                if self.isFirstAppearance {
                    self.isFirstAppearance = false
                    self.playerVC.player?.play()
                }
            }
        }
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        
        // starting often takes around half a second,
        // so do it on a background thread as to not block the UI
        DispatchQueue.global(qos: .userInitiated).async {
            AudioSessionHelper.setDefault()
            AudioSessionHelper.disable()
        }
    }

}
