package com.vexoanalytics.vexo;

import android.util.Log;

import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;

import co.vexo.vexoanalytics.VexoAnalytics;
import co.vexo.vexoanalytics.VexoAnalyticsException;

public class RNVexoModule extends ReactContextBaseJavaModule {
  private static final String TAG = RNVexoModule.class.getSimpleName();
  private final VexoAnalytics vexoAnalyticsModule;
  public RNVexoModule(ReactApplicationContext context) {
    super(context);
    vexoAnalyticsModule = new VexoAnalytics();
  }

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

  @ReactMethod
  public void configureWithApiKey(String apiKey, String deviceId, ReadableMap config, Promise promise) {
    try {
      vexoAnalyticsModule.configure(apiKey, deviceId, config.toHashMap(), getCurrentActivity());
      promise.resolve(null);
    } catch (VexoAnalyticsException e) {
      Log.i(TAG, String.format("Failed to configure: %s", e.getMessage()));
      promise.reject("Failed to configure", e.getMessage());
    }
  }

  @ReactMethod
  public void blurImage(String base64Image, Integer radius, Promise promise) {
    try {
      promise.resolve(vexoAnalyticsModule.blurImage(base64Image, radius));
    } catch (VexoAnalyticsException e) {
      promise.reject("Blur image error", e.getMessage());
    }
  }

  @ReactMethod
  public void startRecording(String sessionId, Promise promise) {
    try {
      vexoAnalyticsModule.startRecording(sessionId);
      promise.resolve(null);
    } catch (VexoAnalyticsException e) {
      promise.reject("Start session replay error", e.getMessage());
    }
  }

  @ReactMethod
  public void stopRecording(Promise promise) {
    try {
      vexoAnalyticsModule.stopRecording();
      promise.resolve(null);
    } catch (VexoAnalyticsException e) {
      promise.reject("Stop session replay error", e.getMessage());
    }
  }
}
