package com.myfatoorahreactnative.cardview;

import androidx.annotation.NonNull;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.myfatoorahreactnative.utils.MFConstants;
import com.myfatoorahreactnative.utils.MFExtentionsKt;
import com.myfatoorah.sdk.entity.MFCardViewStyle;
import com.facebook.react.bridge.ReadableMap;
import com.myfatoorah.sdk.views.embeddedpayment.MFPaymentCardView;

import android.view.View;
import android.webkit.WebView;

import androidx.appcompat.widget.LinearLayoutCompat;
import androidx.constraintlayout.widget.ConstraintLayout;

public class MFCardViewManager extends SimpleViewManager<MFPaymentCardView> implements IMFCardViewManager {
  public static MFPaymentCardView paymentCardView;

  //#region ReactNative Module Required
  public static ReactApplicationContext reactContext;

  public MFCardViewManager(ReactApplicationContext reactContext) {
    MFCardViewManager.reactContext = reactContext;
  }

  @NonNull
  @Override
  public String getName() {
    return MFConstants.MFCardViewModuleNAME;
  }

  @NonNull
  @Override
  public MFPaymentCardView createViewInstance(@NonNull ThemedReactContext context) {
    paymentCardView = new MFPaymentCardView(context);
    WebView webView = paymentCardView.findViewById(com.myfatoorah.sdk.R.id.webView_cardView);
    ((View) webView.getParent()).setLayoutParams(new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT));
    webView.setLayoutParams(new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT));
    return paymentCardView;
  }

  //#endregion

  //#region CardView Props
  @Override
  @ReactProp(name = "paymentStyle")
  public void setPaymentStyle(MFPaymentCardView view, ReadableMap cardStyleMap) {
    MFCardViewStyle userCardStyle;
    if (cardStyleMap == null)
      userCardStyle = new MFCardViewStyle();
    else
      userCardStyle = MFExtentionsKt.handleReadableMap(cardStyleMap, MFCardViewStyle.class);
    view.setCardStyle(userCardStyle);
  }

  @Override
  @ReactProp(name = "showNFCReadCardIcon")
  public void setShowNFCReadCardIcon(MFPaymentCardView view, boolean value) {
    if (reactContext.hasCurrentActivity() && reactContext.getCurrentActivity() != null)
      view.enableCardNFC(reactContext.getCurrentActivity());
    else
      view.disableCardNFC();
  }
  //#endregion
}
