import AVFoundation
import React

@objc(Torch)
class Torch: NSObject {
  private var isTorchOn: Bool = false
  
  @objc
  func torchOn(_ resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
    resolve(isTorchOn)
  }

  @objc
  func toggleTorch(_ newValue: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
    guard let device = AVCaptureDevice.default(for: .video) else {
      reject("ERROR", "No se encontró dispositivo con linterna", nil)
      return
    }
    
    if device.hasTorch {
      do {
        try device.lockForConfiguration()
        device.torchMode = newValue ? .on : .off
        device.unlockForConfiguration()
        isTorchOn = newValue
        resolve(isTorchOn)
      } catch {
        reject("ERROR", "No se pudo encender/apagar la linterna", error)
      }
    } else {
      reject("UNSUPPORTED", "Este dispositivo no soporta linterna", nil)
    }
  }
}
