package com.reactnativebluestackmodule.common;

import com.reactnativebluestackmodule.interfaces.IContextManager;

import android.app.Activity;
import android.content.Context;
import com.facebook.react.bridge.*;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import javax.annotation.Nonnull;

public class ReactNativeModule extends ReactContextBaseJavaModule implements IContextManager {

  private String moduleName;

  public ReactNativeModule(ReactApplicationContext reactContext, String moduleName) {
    super(reactContext);
    this.moduleName = moduleName;
  }

  public static void rejectPromiseWithCodeAndMessage(Promise promise, String code, String message) {
    WritableMap userInfoMap = Arguments.createMap();
    userInfoMap.putString("code", code);
    userInfoMap.putString("message", message);
    promise.reject(code, message, userInfoMap);
  }

  @Override
  public void initialize() {
    super.initialize();
  }

  public ReactContext getContext() {
    return getReactApplicationContext();
  }

  public Context getApplicationContext() {
    return getReactApplicationContext().getApplicationContext();
  }

  public Activity getActivity() {
    return getCurrentActivity();
  }

  @Nonnull
  @Override
  public String getName() {
    return moduleName;
  }

  @Override
  public Map<String, Object> getConstants() {
    return new HashMap<>();
  }
}
