import Foundation
import Capacitor

/**
 * Please read the Capacitor iOS Plugin Development Guide
 * here: https://capacitorjs.com/docs/plugins/ios
 */
@objc(Printer)
public class Printer: CAPPlugin {

    @objc func printImage(_ call: CAPPluginCall) {
        let settings = Settings(settings: call.getObject("data") ?? ["html":"<div>No text</div>", "duplex": false])
        let html = settings.html
        let printController = UIPrintInteractionController.shared
        let printInfo = UIPrintInfo(dictionary: nil)
        
        printInfo.outputType = .general
        printInfo.jobName = "Print"
        printInfo.duplex = settings.duplex ? UIPrintInfo.Duplex.longEdge : UIPrintInfo.Duplex.none
        printController.printInfo = printInfo
        
        DispatchQueue.main.async {
//            let dataDecoded:NSData = NSData(base64Encoded: base64 as! String, options: NSData.Base64DecodingOptions(rawValue: 0))!
//            let decodedimage = UIImage(data: dataDecoded as Data)
            
            let formatter = UIMarkupTextPrintFormatter(markupText: html)
            formatter.perPageContentInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
            printController.printFormatter = formatter
//            printController.printingItem = decodedimage
            
            printController.present(animated: true)
            call.success([
                "value": true
            ])
        }
        

    }
}

class Settings {
    var html: String
    var duplex: Bool
    init(settings: [String: Any]) {
        self.html = settings["html"] as! String
        self.duplex = settings["duplex"] as! Bool
    }
}
