package com.greact;

import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Callback;

import com.facebook.react.bridge.ReadableMap;

import com.greact.GreactAcrCloud;

public class GreactAcrCloudModule extends ReactContextBaseJavaModule {

    private final ReactApplicationContext reactContext;
    private GreactAcrCloud arcCloud;

    private String host;
    private String accessKey;
    private String accessSecretKey;

    public GreactAcrCloudModule(ReactApplicationContext reactContext) {
      	super(reactContext);
        this.reactContext = reactContext;
    }

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

    @ReactMethod
    public void init(ReadableMap options, final Callback successCallback, final Callback errorCallback) {
        if (!options.hasKey("host")) {
            errorCallback.invoke("Missing host url");
        }

        if (!options.hasKey("accessKey")) {
            errorCallback.invoke("Missing access key");
        }

        if (!options.hasKey("accessSecret")) {
            errorCallback.invoke("Missing access secret key");
        }

		this.arcCloud = new GreactAcrCloud(options);

        if(this.arcCloud == null) {
            errorCallback.invoke("Fail to init object");
        }

        successCallback.invoke();
    }

    @ReactMethod
    public void start(final Callback successCallback, final Callback errorCallback) {
		if(this.arcCloud != null){
			this.arcCloud.start(successCallback, errorCallback);
		}
	}

    @ReactMethod
    public void cancel() {
		if(this.arcCloud != null){
			this.arcCloud.cancel();
		}
	}

    @ReactMethod
    public void stop() {
		if(this.arcCloud != null){
			this.arcCloud.stop();
		}
	}
}