import Foundation
import Capacitor
import DragonMedicalSpeechKit

/**
 * Please read the Capacitor iOS Plugin Development Guide
 * here: https://capacitorjs.com/docs/plugins/ios
 */
@objc(NuanceSpeechkitPlugin)
public class NuanceSpeechkitPlugin: CAPPlugin {
    private let implementation = NuanceSpeechkit()
    
    @objc func initSpeechKit(_ call: CAPPluginCall) {
        guard let bridge = self.bridge else { return }

        let applicationName = call.getString("applicationName") ?? ""
        let partnerGuid = call.getString("partnerGuid") ?? ""
        let organizationToken = call.getString("organizationToken") ?? ""
        let userName = call.getString("userName") ?? ""
        DispatchQueue.main.async {
            do {
                try  NUSASession.shared().open(forApplication: applicationName, partnerGuid: partnerGuid, licenseGuid: organizationToken, userId: userName)
            } catch let error {
                // Handle the error and provide a meaningful message
                print("Error initializing Nuance: \(error.localizedDescription)")
                call.reject("Nuance initialization failed")
            }
        }
        call.resolve()
    }

    @objc func echo(_ call: CAPPluginCall) {
        guard let bridge = self.bridge else { return }

        let value = call.getString("value") ?? ""
        call.resolve([
            "value": implementation.echo(value)
        ])
    }
    @objc func start(_ call: CAPPluginCall) {
        DispatchQueue.main.async {
        guard let bridge = self.bridge else { return }
            bridge.saveCall(call)
            self.implementation.start(bridge,callbackId: call.callbackId)
        }

    }
}
