package o2mc.io.dimmldependency.ReactBindings;

import android.app.Application;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import o2mc.io.dimmldependency.Datastreams.Datastream;

/**
 * Created by nickyromeijn on 01-06-16.
 * React bridge class
 * This class functions as public interface for react-native
 * All methods directly map to methods defined the Tagger class
 */

public class ReactTracker extends ReactContextBaseJavaModule {

    private Datastream ds;
    public ReactTracker(ReactApplicationContext reactContext, String appKey, String endpoint, int dispatchInterval) {
        super(reactContext);
        ds = new Datastream((Application) reactContext.getApplicationContext(), appKey);
        ds.getDatastreamsHandler().getDispatcher().setDispatchThreshhold(9999);
        setEndpoint(endpoint);
        setDispatchInterval(dispatchInterval);
        ds.tracker.setTrackingId(appKey);
    }


    @ReactMethod
    public void track(String eventName) {
        ds.tracker.track(eventName);
    }

    @ReactMethod
    public void trackWithProperties(String eventName, String propertiesAsJson) {
        ds.tracker.trackWithProperties(eventName, propertiesAsJson);
    }

    @ReactMethod
    public void createAlias(String alias) {
        ds.tracker.createAlias(alias);
    }

    @ReactMethod
    public void identify(String identifier) {
       ds.tracker.identify(identifier);
    }


    @ReactMethod
    public void timeEventStart(String eventName) {
        ds.tracker.timeEventStart(eventName);
    }


    @ReactMethod
    public void timeEventStop(String eventName) {
       ds.tracker.timeEventStop(eventName);
    }


    @ReactMethod
    public void timeEventStartWithProps(String eventName, String propertiesAsJson) {
        ds.tracker.timeEventStart(eventName, propertiesAsJson);
    }


    @ReactMethod
    public void timeEventStopWithProps(String eventName, String propertiesAsJson) {
        ds.tracker.timeEventStop(eventName, propertiesAsJson);
    }

    @ReactMethod
    public void trackCharge(double amount, String propertiesAsJson) {

    }

    @ReactMethod
    public void trackLocation(String location) {
        ds.tracker.trackLocation(location);
    }

    @ReactMethod
    public void reset() {
        ds.tracker.reset();
    }

    @ReactMethod
    public void setEndpoint(String endpoint) {
        ds.tracker.setEndpoint(endpoint);
    }

    @ReactMethod
    public void setDispatchInterval(int interval) {
       ds.tracker.setDispatchInterval(interval);
    }

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



}


