Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package mx.com.santander.superwallet.presenter.virtual.fragment;
- import android.animation.Animator;
- import android.animation.AnimatorListenerAdapter;
- import android.arch.lifecycle.Observer;
- import android.arch.lifecycle.ViewModelProviders;
- import android.content.Context;
- import android.os.Build;
- import android.os.Bundle;
- import android.support.annotation.Nullable;
- import android.support.v7.view.ContextThemeWrapper;
- import android.text.Editable;
- import android.text.TextWatcher;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.inputmethod.InputMethodManager;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.PopupWindow;
- import android.widget.RelativeLayout;
- import android.widget.ScrollView;
- import android.widget.TextView;
- import com.facebook.drawee.view.SimpleDraweeView;
- import com.gemalto.idp.mobile.core.HookingDetectionListener;
- import com.gemalto.idp.mobile.core.SecurityDetectionService;
- import butterknife.BindView;
- import butterknife.ButterKnife;
- import butterknife.OnClick;
- import butterknife.Unbinder;
- import mx.com.santander.superwallet.R;
- import mx.com.santander.superwallet.presenter.virtual.model.PresentActivateDigitalCardView;
- import mx.com.santander.superwallet.presenter.virtual.model.AuthenticationPinType;
- import mx.com.santander.superwallet.presenter.virtual.view.ActivateVirtualCardView;
- import mx.com.santander.superwallet.utils.FormatUtils;
- import mx.com.santander.superwallet.utils.ImageUtils;
- import mx.com.santander.superwallet.viewmodel.virtual.ActivateVirtualCardViewModel;
- import mx.com.santander.superwallet.views.fragments.base.OnSyncInterval;
- import mx.com.santander.superwallet.views.fragments.base.WalletBaseFragment;
- import mx.com.santander.superwalletcore.model.beans.Product;
- import static android.content.res.Resources.getSystem;
- import static mx.com.santander.superwallet.payments.util.PaymentConstants.RESPONSE_DIGITAL_CARD_ENROLLED_SUCCESS_CODE;
- import static mx.com.santander.superwallet.utils.Constants.BRAND_AMEX;
- import static mx.com.santander.superwallet.utils.Constants.BRAND_MASTER_CARD;
- import static mx.com.santander.superwallet.utils.Constants.BRAND_VISA;
- import static mx.com.santander.superwallet.utils.Constants.BUNDLE_KEY_TYPE_AUTHENTICATION_PIN;
- import static mx.com.santander.superwallet.utils.Constants.BUNDLE_KEY_VIRTUAL_CARD_PRODUCT;
- import static mx.com.santander.superwallet.utils.Constants.MARK_AMEX;
- import static mx.com.santander.superwallet.utils.Constants.MARK_MASTER_CARD;
- import static mx.com.santander.superwallet.utils.Constants.MARK_VISA;
- public class ActivateVirtualCardFragment extends WalletBaseFragment implements ActivateVirtualCardView, OnSyncInterval {
- @BindView(R.id.iv_activate_virtual_card_header)
- SimpleDraweeView ivActivateVirtualCardHeader;
- @BindView(R.id.tv_activate_virtual_card_data_pan)
- TextView tvActivateVirtualCardDataPan;
- @BindView(R.id.et_activate_virtual_card_data_pan)
- EditText etActivateVirtualCardDataPan;
- @BindView(R.id.et_activate_virtual_card_data_expiration_date)
- EditText etActivateVirtualCardDataExpirationDate;
- @BindView(R.id.et_activate_virtual_card_data_cvv)
- EditText etActivateVirtualCardDataCvv;
- @BindView(R.id.iv_activate_virtual_card_data_cvv_help)
- ImageView ivActivateVirtualCardDataCvvHelp;
- @BindView(R.id.btn_activate_virtual_card_data_enroll)
- Button btnActivateVirtualCardDataEnroll;
- @BindView(R.id.rl_activate_virtual_card_data_container)
- RelativeLayout rlActivateVirtualCardDataContainer;
- @BindView(R.id.rl_activate_virtual_card_sucess_container)
- RelativeLayout rlActivateVirtualCardSucessContainer;
- @BindView(R.id.rl_activate_virtual_card_failed_container)
- RelativeLayout rlActivateVirtualCardFailedContainer;
- @BindView(R.id.sv_activate_virtual_card_container)
- ScrollView svActivateVirtualCardContainer;
- @BindView(R.id.tv_activate_virtual_card_sucess_message)
- TextView tvActivateVirtualCardSuccessMessage;
- public static final String TAG = ActivateVirtualCardFragment.class.getSimpleName();
- private View view;
- private Unbinder unbinder;
- private Product<?> activateProduct;
- private InputMethodManager imm;
- private ActivateVirtualCardViewModel viewModel;
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setScreenName(TAG);
- setOnSyncInterval(this);
- }
- @Nullable
- @Override
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- view = inflater.inflate(R.layout.fragment_activate_virtual_card, container, false);
- unbinder = ButterKnife.bind(this, view);
- subscribeViewModels();
- initView();
- return view;
- }
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- unbinder.unbind();
- }
- @Override
- public void onSyncManager(String TAG, long timeElapsed) {
- }
- @Override
- public void initView() {
- try {
- if (getArguments() == null) {
- onShowCriticalError();
- return;
- }
- /*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- if (getActivity() != null)
- if (getActivity().getWindow() != null)
- getActivity().getWindow().setStatusBarColor(getResources().getColor(R.color.white));
- }*/
- activateProduct = (Product<?>) getArguments().getSerializable(BUNDLE_KEY_VIRTUAL_CARD_PRODUCT);
- if (activateProduct != null)
- viewModel.onCheckActivateProduct(activateProduct);
- if (getContext() != null)
- imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
- rlActivateVirtualCardDataContainer.setVisibility(View.VISIBLE);
- rlActivateVirtualCardSucessContainer.setVisibility(View.INVISIBLE);
- rlActivateVirtualCardFailedContainer.setVisibility(View.INVISIBLE);
- btnActivateVirtualCardDataEnroll.setEnabled(Boolean.FALSE);
- etActivateVirtualCardDataPan.addTextChangedListener(new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence str, int start, int count, int after) {
- }
- @Override
- public void onTextChanged(CharSequence str, int start, int before, int count) {
- }
- @Override
- public void afterTextChanged(Editable str) {
- if (activateProduct.getPan().length() == 15) {
- //es amex
- if (str.toString().trim().length() >= 15) {
- etActivateVirtualCardDataPan.clearFocus();
- etActivateVirtualCardDataExpirationDate.requestFocus();
- etActivateVirtualCardDataExpirationDate.setCursorVisible(true);
- } else {
- }
- } else if (activateProduct.getPan().length() == 16) {
- //es visa o amex
- if (str.toString().trim().length() >= 16) {
- etActivateVirtualCardDataPan.clearFocus();
- etActivateVirtualCardDataExpirationDate.requestFocus();
- etActivateVirtualCardDataExpirationDate.setCursorVisible(true);
- } else {
- }
- }
- }
- });
- etActivateVirtualCardDataExpirationDate.addTextChangedListener(new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
- @Override
- public void afterTextChanged(Editable str) {
- try {
- String initial = str.toString();
- // remove all non-digits characters
- String processed = initial.replaceAll("\\D", "");
- if (processed.length() > 2) {
- processed = processed.replaceAll("(\\d{2})(?=\\d)", "$1/");
- }
- try {
- etActivateVirtualCardDataExpirationDate.removeTextChangedListener(this);
- etActivateVirtualCardDataExpirationDate.setText(processed);
- etActivateVirtualCardDataExpirationDate.setSelection(processed.length());
- } catch (Exception e) {
- e.printStackTrace();
- }
- etActivateVirtualCardDataExpirationDate.addTextChangedListener(this);
- if (str.toString().trim().length() >= 5) {
- etActivateVirtualCardDataExpirationDate.clearFocus();
- etActivateVirtualCardDataCvv.requestFocus();
- etActivateVirtualCardDataCvv.setCursorVisible(true);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- etActivateVirtualCardDataCvv.addTextChangedListener(new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
- @Override
- public void afterTextChanged(Editable str) {
- if (str.toString().length() >= 1) {
- svActivateVirtualCardContainer.pageScroll(ScrollView.FOCUS_DOWN);
- etActivateVirtualCardDataCvv.requestFocus();
- etActivateVirtualCardDataCvv.setSelection(etActivateVirtualCardDataCvv.getText().toString().length());
- }
- if (activateProduct.getPan().length() == 15) {
- //es amex
- if (str.toString().trim().length() >= 5) {
- etActivateVirtualCardDataCvv.clearFocus();
- btnActivateVirtualCardDataEnroll.setEnabled(Boolean.TRUE);
- } else {
- btnActivateVirtualCardDataEnroll.setEnabled(Boolean.FALSE);
- }
- } else if (activateProduct.getPan().length() == 16) {
- //es visa o master
- if (str.toString().trim().length() >= 3) {
- etActivateVirtualCardDataCvv.clearFocus();
- btnActivateVirtualCardDataEnroll.setEnabled(Boolean.TRUE);
- imm.hideSoftInputFromWindow(etActivateVirtualCardDataCvv.getWindowToken(), 0);
- } else {
- btnActivateVirtualCardDataEnroll.setEnabled(Boolean.FALSE);
- }
- }
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public void subscribeViewModels() {
- viewModel = ViewModelProviders.of(this).get(ActivateVirtualCardViewModel.class);
- viewModel.bindView(this);
- viewModel.getPresentActivateDigitalCardLiveData().observe(this, new Observer<PresentActivateDigitalCardView>() {
- @Override
- public void onChanged(@Nullable PresentActivateDigitalCardView presentActivateDigitalCardView) {
- if (presentActivateDigitalCardView == null) return;
- ImageUtils
- .loadCardImage(
- presentActivateDigitalCardView.getCardFront(),
- ivActivateVirtualCardHeader);
- tvActivateVirtualCardDataPan.setText(presentActivateDigitalCardView.getPan());
- onConfigureGemaltoDetections(presentActivateDigitalCardView);
- }
- });
- viewModel.getPresentPopupCvvInfoLiveData().observe(this, new Observer<PopupWindow>() {
- @Override
- public void onChanged(@Nullable PopupWindow popupWindow) {
- if (popupWindow == null) return;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- popupWindow.showAsDropDown(ivActivateVirtualCardDataCvvHelp, -dpToPx(100), -1 * dpToPx(300));
- }
- }
- });
- }
- public static int dpToPx(int dp) {
- try {
- return (int) (dp * getSystem().getDisplayMetrics().density);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return 0;
- }
- @Override
- public void onShowProgressLoading() {
- showProgressDlg();
- }
- @Override
- public void onHideProgressLoading() {
- hideProgressDialog();
- }
- @Override
- public void onShowToast(String message) {
- }
- @Override
- public Context getViewContext() {
- return getActivity();
- }
- @Override
- public void onConfigureGemaltoDetections(PresentActivateDigitalCardView presentActivateDigitalCardView) {
- try {
- if (presentActivateDigitalCardView.isNeedDebugDetection())
- SecurityDetectionService.setDebuggerDetection(presentActivateDigitalCardView.isNeedDebugDetection());
- if (presentActivateDigitalCardView.isNeedAntiHookingDetection()) {
- SecurityDetectionService.setHookingDetectionListener(new HookingDetectionListener() {
- @Override
- public boolean onHookingDetected() {
- return Boolean.TRUE;
- }
- });
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onEnrollVirtualCardSuccess() {
- try {
- rlActivateVirtualCardDataContainer.setAlpha(1.0f);
- rlActivateVirtualCardSucessContainer.setAlpha(0.0f);
- rlActivateVirtualCardDataContainer
- .animate()
- .alpha(0.0f)
- .setDuration(500)
- .setListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- super.onAnimationEnd(animation);
- rlActivateVirtualCardDataContainer.setVisibility(View.INVISIBLE);
- rlActivateVirtualCardSucessContainer.setVisibility(View.VISIBLE);
- rlActivateVirtualCardFailedContainer.setVisibility(View.INVISIBLE);
- tvActivateVirtualCardSuccessMessage.setText(
- getResources().getString(R.string.virtual_card_activate_enroll_success_message)
- .concat(" ")
- .concat(FormatUtils
- .formatLast4DigitsPan(
- activateProduct.getPan().trim().replace(" ", "")))
- .concat(" fue activada."));
- rlActivateVirtualCardSucessContainer
- .animate()
- .alpha(1.0f)
- .setDuration(500)
- .start();
- if (getFragmentManager() != null) {
- Bundle authenticationTokenPinArguments = new Bundle();
- authenticationTokenPinArguments.putSerializable(BUNDLE_KEY_TYPE_AUTHENTICATION_PIN, AuthenticationPinType.ENROLLMENT_PIN);
- AuthenticateTokenPinDialog authenticateTokenPinDialog = AuthenticateTokenPinDialog.newInstance();
- authenticateTokenPinDialog.setArguments(authenticationTokenPinArguments);
- authenticateTokenPinDialog.show(getFragmentManager(), AuthenticateTokenPinDialog.TAG);
- }
- }
- })
- .start();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onEnrollVirtualCardFailed() {
- try {
- rlActivateVirtualCardDataContainer.setAlpha(1.0f);
- rlActivateVirtualCardFailedContainer.setAlpha(0.0f);
- rlActivateVirtualCardDataContainer
- .animate()
- .alpha(0.0f)
- .setDuration(500)
- .setListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- super.onAnimationEnd(animation);
- rlActivateVirtualCardDataContainer.setVisibility(View.INVISIBLE);
- rlActivateVirtualCardSucessContainer.setVisibility(View.INVISIBLE);
- rlActivateVirtualCardFailedContainer.setVisibility(View.VISIBLE);
- rlActivateVirtualCardFailedContainer
- .animate()
- .alpha(1.0f)
- .setDuration(500)
- .start();
- }
- })
- .start();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onShowCriticalError() {
- }
- @Override
- public void onShowValidationPanError() {
- showMessageDlgTwo(
- getResources().getString(R.string.title_error),
- getResources().getString(R.string.virtual_card_activate_enroll_validation_error));
- }
- @Override
- public String onGetCardBrandName(String mark) {
- try {
- switch (mark) {
- case MARK_MASTER_CARD: {
- return BRAND_MASTER_CARD;
- }
- case MARK_VISA: {
- return BRAND_VISA;
- }
- case MARK_AMEX: {
- return BRAND_AMEX;
- }
- default: {
- return BRAND_MASTER_CARD;
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return BRAND_MASTER_CARD;
- }
- @OnClick(R.id.btn_activate_virtual_card_close)
- public void onActivateVirtualCardCloseClicked() {
- try {
- if (getActivity() != null)
- getActivity().finish();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @OnClick(R.id.iv_activate_virtual_card_data_cvv_help)
- public void onActivateVirtualCardDataCvvHelpClicked() {
- viewModel.onShowActivateCardCvvInfo(new ContextThemeWrapper(getActivity(), R.style.AppTheme));
- }
- @OnClick(R.id.btn_activate_virtual_card_data_enroll)
- public void onActivateVirtualCardDataEnrollClicked() {
- try {
- viewModel.onEnrollVirtualCard(
- activateProduct.getCenterCode(),
- activateProduct.getContract(),
- activateProduct.getCodigoEstampacion(),
- activateProduct.getTipoProductoPampa(),
- onGetCardBrandName(activateProduct.getMarca()),
- etActivateVirtualCardDataPan.getText().toString().trim().replace(" ", ""),
- etActivateVirtualCardDataExpirationDate.getText().toString().trim().replace("/", ""),
- etActivateVirtualCardDataCvv.getText().toString().trim().replace(" ", ""),
- getWalletActivity().getDeviceInfo().DeviceModel);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @OnClick(R.id.btn_activate_virtual_card_sucess_landing)
- public void onActivateVirtualCardSucessLandingClicked() {
- try {
- if (getActivity() == null) return;
- getActivity().setResult(RESPONSE_DIGITAL_CARD_ENROLLED_SUCCESS_CODE);
- getActivity().finish();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement