package com.reactnativepayengine.collect.fields;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

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.reactnativepayengine.collect.VGSCollectOnCreateViewInstanceListener;
import com.verygoodsecurity.vgscollect.widget.VGSEditText;
import com.verygoodsecurity.vgscollect.widget.VGSTextInputLayout;

public class VGSTextField extends SimpleViewManager<VGSTextInputLayout> {
  private final VGSCollectOnCreateViewInstanceListener listener;

  private VGSEditText editText;
  private VGSTextInputLayout vgsTextInputLayout;

  ReactApplicationContext mCallerContext;

  public VGSTextField(VGSCollectOnCreateViewInstanceListener listener, ReactApplicationContext reactContext) {
    this.listener = listener;
    mCallerContext = reactContext;
  }

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

  @NonNull
  @Override
  protected VGSTextInputLayout createViewInstance(@NonNull ThemedReactContext reactContext) {
    vgsTextInputLayout = new VGSTextInputLayout(reactContext);
    vgsTextInputLayout.setHint("");
    editText = new VGSEditText(reactContext);
    editText.setFieldName("custom_text");
    editText.setPadding(10, 0, 10, 0);

    vgsTextInputLayout.addView(editText);

    this.listener.onCreateViewInstance(editText);
    return vgsTextInputLayout;
  }

  @ReactProp(name = "placeholder")
  public void setPlaceholder(VGSTextInputLayout view, @Nullable String placeholder) {
    vgsTextInputLayout.setHint(placeholder);
  }

  @ReactProp(name = "maxlength")
  public void setMaxLength(VGSTextInputLayout view, @Nullable double maxLength) {
    editText.setMaxLength((int) maxLength);
  }
}

