package com.neptune.plugin;


import com.getcapacitor.JSObject;
import com.getcapacitor.PluginCall;
import com.neptune.modules.Mag;
import com.neptune.plugin.models.TrackDataModel;
import com.neptune.utils.MyLog;

import com.pax.dal.exceptions.MagDevException;

public class NeptuneMagHandler {

    public static void open(PluginCall call) {
        MyLog.logI("Starting open");

        JSObject ret = new JSObject();
        try {
            Mag.getInstance().open();
            ret.put("value", NeptuneErrors.NEPTUNE_ERR_OK.name());
            call.success(ret);
        }catch(MagDevException e){
            MyLog.logE(e.getMessage());
            call.reject(e.getMessage(), e);
        }
    }
    public static void close(PluginCall call) {
        MyLog.logI("Starting close");

        JSObject ret = new JSObject();
        try {
            Mag.getInstance().close();
            ret.put("value", NeptuneErrors.NEPTUNE_ERR_OK.name());
            call.success(ret);
        }catch(MagDevException e){
            MyLog.logE(e.getMessage());
            call.reject(e.getMessage(), e);
        }
    }


    public static void reset(PluginCall call) {
        MyLog.logI("Starting reset");
        JSObject ret = new JSObject();
        try {
            Mag.getInstance().reset();
            ret.put("value", NeptuneErrors.NEPTUNE_ERR_OK.name());
            call.success(ret);
        }catch(MagDevException e){
            MyLog.logE(e.getMessage());
            call.reject(e.getMessage(), e);
        }
    }

    public static void isSwiped(PluginCall call) {
        MyLog.logI("Starting isSwiped");
        JSObject ret = new JSObject();
        try {
            ret.put("value", Mag.getInstance().isSwiped());
            call.success(ret);
        }catch(MagDevException e){
            MyLog.logE(e.getMessage());
            call.reject(e.getMessage(), e);
        }
    }

    public static void read(PluginCall call) {

        MyLog.logI("Starting read");
        JSObject ret = new JSObject();
        try {
            ret.put("value", new TrackDataModel(Mag.getInstance().read()).toJSON());
            call.success(ret);
        }catch(MagDevException e){
            MyLog.logE(e.getMessage());
            call.reject(e.getMessage(), e);
        }
    }






}
