package com.helpshift.react;

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

import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.helpshift.log.HSLogger;
import com.facebook.react.bridge.WritableArray;
import org.json.JSONObject;

import java.util.List;
import java.util.Map;


abstract class HelpshiftPluginSdkxReactNativeSpec extends ReactContextBaseJavaModule {

  private static final String TAG = "HSSdkxReactSpec";
  private final ReactApplicationContext reactApplicationContext;

  HelpshiftPluginSdkxReactNativeSpec(ReactApplicationContext context) {
    super(context);
    this.reactApplicationContext = context;
  }

  public void sendEvent(String emitterName, String eventName, Map<String, Object> map) {
    WritableMap sendData = Arguments.createMap();
    sendData.putString("eventName", eventName);
    try {
        sendData.putMap("eventData", HelpshiftUtils.convertMapToWritableMap(map));
        this.reactApplicationContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(emitterName, sendData);
    } catch (Exception e) {
        HSLogger.e(TAG, "Error while emitting events: " + emitterName + ", event: " + eventName, e);
    }
  }
}
