import UIKit
import SwiftUI
import Foundation
import Signature
import React

@available(iOS 15.0, *)
@objc(SignatureSdkReactNative)
class SignatureSdkReactNative: NSObject {

  @objc(takeSignature:withResolver:withRejecter:)
  func takeSignature(
    signatureConfig: NSDictionary,
    resolve: @escaping RCTPromiseResolveBlock,
    reject: @escaping RCTPromiseRejectBlock
  ) {
    let config = Utils.dictionaryToSignatureConfig(config: signatureConfig)
    DispatchQueue.main.async {
      let signatureView = SignatureView(with: config, onReceiveImage: { image in
        let signatureCallback = Utils.signatureEventToDictionary(image: image)
        resolve(signatureCallback)
      })
    
      let rootViewController: UIViewController! = UIApplication.shared.delegate?.window??.rootViewController
      
      let contentView = UIHostingController(rootView: signatureView)
      contentView.modalPresentationStyle = .fullScreen
      rootViewController.present(contentView, animated: true, completion: nil)
    }
  }
}
