package com.monthyearpicker;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.common.annotations.VisibleForTesting;
import com.facebook.react.module.annotations.ReactModule;
import com.monthyearpicker.adapter.RNMonthPickerProps;
import com.monthyearpicker.adapter.RNPropsAdapter;


import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;

@ReactModule(name = RNMonthYearPickerModule.REACT_CLASS)
public class RNMonthYearPickerModule extends NativeRNMonthYearPickerModuleSpec {

  protected ReactApplicationContext reactContext;
  @VisibleForTesting
  public static final String REACT_CLASS = "RNMonthYearPicker";

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

  @NonNull
  @Override
  public String getName() {
    return REACT_CLASS;
  }

  @ReactMethod
  public void open(@Nullable final ReadableMap options, final Promise promise) {
    final FragmentActivity fragmentActivity = (FragmentActivity) getCurrentActivity();
    if (fragmentActivity == null) {
      promise.reject("E_NO_ACTIVITY", "No current activity");
      return;
    }

    UiThreadUtil.runOnUiThread(new Runnable() {
      @Override
      public void run() {
        RNMonthPickerProps props = new RNPropsAdapter(options, promise, reactContext);
        RNMonthPickerDialog mp = new RNMonthPickerDialog(props);
        mp.show(fragmentActivity.getSupportFragmentManager(), REACT_CLASS);
      }
    });
  }
}
