//
//  ThumbnailView.swift
//  Pods
//
//  Created by Asti Manuka on 27/12/23.
//

import AVFoundation
import Foundation
import PRESTOplay
import react_native_prestoplay

@objc(RNPrestoplayThumbnailView)
public class RNPrestoplayThumbnailView: UIImageView {
    override init(frame: CGRect) {
        super.init(frame: frame)
        superview?.bringSubviewToFront(self)
    }

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

    // MARK: Public

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

    @objc(setPositionMs:)
    public func setPositionMs(_ position: Int64) {
        self.positionMs = position
        loadThumbnail()
    }

    // MARK: Private

    private var playerId: String?
    private var positionMs: Int64?

    private func loadThumbnail() {
        guard
            let playerId,
            let positionMs,
            let thumbnailExtension = Repository.shared.players.get(key: playerId)?.getExtension(of: ThumbnailExtension.self),
            let thumbnail = thumbnailExtension.getThumbnail(at: positionMs)
        else { return }

        let image = UIImage(data: thumbnail.imageData)
        DispatchQueue.main.async {
            self.image = image
            self.superview?.bringSubviewToFront(self)
        }
    }
}
