package com.reactlibrary;

import com.common.print.api.UsbThermalPrinter;
import com.common.print.error.TelpoException;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Callback;

public class TelpoPosModule extends ReactContextBaseJavaModule {
    UsbThermalPrinter mUsbThermalPrinter;
    String printVersion;
    private final ReactApplicationContext reactContext;

    public TelpoPosModule(ReactApplicationContext reactContext) {
        super(reactContext);
        this.reactContext = reactContext;
        mUsbThermalPrinter = new UsbThermalPrinter(getReactApplicationContext());
        new Thread(() -> {
            try {
                //mUsbThermalPrinter.start(0);
                mUsbThermalPrinter.start(1);
                mUsbThermalPrinter.reset();
                printVersion = mUsbThermalPrinter.getVersion();
            } catch (TelpoException e) {
                e.printStackTrace();
            } finally {
            }
        }).start();
    }

    @Override
    public String getName() {
        return "TelpoPos";
    }

    @ReactMethod
    public void sampleMethod(String stringArgument, int numberArgument, Callback callback) {
        // TODO: Implement some actually useful functionality
        callback.invoke("Received numberArgument: " + numberArgument + " stringArgument: " + stringArgument);
    }
    @ReactMethod
    public void walkPaper(String stringArgument, Callback callback){
        try{
            mUsbThermalPrinter.setTextSize(25);
            mUsbThermalPrinter.addString(stringArgument);
            mUsbThermalPrinter.printString();
            mUsbThermalPrinter.walkPaper(20);
            callback.invoke(true);
        } catch(TelpoException e){
            e.printStackTrace();
//        Log.d("PRINTER",e.toString());
        }

    }
}
