//
//  PlayerDeckManager.swift
//  react-native-firework-sdk
//

import FireworkVideo
import Foundation

@objc(FWPlayerDeckManager)
class FWPlayerDeckManager: RCTViewManager, PlayerDeckViewDelegate {

    override func view() -> UIView! {
        _ = FWSAppLanguageManager.shared
        let playerDeck = PlayerDeck()
        playerDeck.delegate = self
        return playerDeck
    }

    override class func requiresMainQueueSetup() -> Bool {
        return true
    }

    override var methodQueue: DispatchQueue {
        return DispatchQueue.main
    }

    // MARK: - PlayerDeckViewDelegate

    func playerDeckDidLoadFeed(_ view: PlayerDeck) {
        view.onPlayerDeckLoadFinished?(nil)
    }

    func playerDeck(_ view: PlayerDeck, didFailToLoadFeed error: VideoFeedError) {
        if case .contentSourceError(let feedContentSourceError) = error,
           case .emptyFeed = feedContentSourceError {
            view.onPlayerDeckEmpty?(nil)
        } else {
            view.onPlayerDeckLoadFinished?(error.jsObject)
        }
    }
}
