//
//  ScanbotSDKCapacitorPlugin.swift
//  Plugin
//
//  Copyright © 2024 Scanbot SDK GmbH. All rights reserved.
//

import Capacitor
import ScanbotSDKNativeWrapper

extension ScanbotSDKCapacitorPlugin {
  
  @objc func initialize(_ call: CAPPluginCall) {
    SBDWrapper.initializeSDK(
      configuration: call.data,
      resultDelegate: call.delegate,
      framework: .rnCap
    )
  }
  
  @objc func getLicenseInfo(_ call: CAPPluginCall) {
    SBSDKManager.getLicenseInfo(resultDelegate: call.delegate)
  }
  
  @objc func getOcrConfigs(_ call: CAPPluginCall) {
    SBDOCREngine.getOCRConfigs(resultDelegate: call.delegate)
  }
  
  @objc func cleanupStorage(_ call: CAPPluginCall) {
    SBDWrapper.cleanup(resultDelegate: call.delegate)
  }
  
  @objc func setAnalyticsServiceCallback (_ call: CAPPluginCall) {
    if let analyticsCall = self.analyticsCall {
      self.bridge?.releaseCall(analyticsCall)
      self.analyticsCall = nil
    }
    
    call.keepAlive = true
    analyticsCall = call
    
    SBDWrapper.analyticsSubscribe(
      resultDelegate: ResultDelegate(analyticsCall!),
      eventCallback: { event in
        self.analyticsCall?.resolve(event)
      })
  }
  
  @objc func removeAnalyticsServiceCallback (_ call: CAPPluginCall) {
    if let analyticsCall = self.analyticsCall {
      self.bridge?.releaseCall(analyticsCall)
      self.analyticsCall = nil
    }
    
    SBDWrapper.analyticsUnsubscribe(resultDelegate: call.delegate)
  }
  
  @objc func mockCamera(_ call: CAPPluginCall) {
    SBSDKManager.mockCamera(options: call.data, resultDelegate: call.delegate)
  }
}
