import Foundation
@preconcurrency import React

@objc(BBShortsViewManager)
class BBShortsViewManager: RCTViewManager, @unchecked Sendable {

    override func view() -> UIView! {
        return MainActor.assumeIsolated { BBShortsView() }
    }

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

    @objc override static func moduleName() -> String! {
        return "BBShortsView"
    }

    // MARK: - Helpers

    private func getView(_ reactTag: NSNumber) -> BBShortsView? {
        return self.bridge.uiManager.view(forReactTag: reactTag) as? BBShortsView
    }

    private func onMainActor(_ work: @MainActor @Sendable @escaping () -> Void) {
        DispatchQueue.main.async {
            MainActor.assumeIsolated(work)
        }
    }

    // MARK: - Commands

    @objc func destroy(_ reactTag: NSNumber) {
        onMainActor { self.getView(reactTag)?.destroy() }
    }
}
