Advertisement
Guest User

Fragment

a guest
Jun 19th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.98 KB | None | 0 0
  1. package mx.com.santander.superwallet.presenter.virtual.fragment;
  2.  
  3. import android.animation.Animator;
  4. import android.animation.AnimatorListenerAdapter;
  5. import android.arch.lifecycle.Observer;
  6. import android.arch.lifecycle.ViewModelProviders;
  7. import android.content.Context;
  8. import android.os.Build;
  9. import android.os.Bundle;
  10. import android.support.annotation.Nullable;
  11. import android.support.v7.view.ContextThemeWrapper;
  12. import android.text.Editable;
  13. import android.text.TextWatcher;
  14. import android.view.LayoutInflater;
  15. import android.view.View;
  16. import android.view.ViewGroup;
  17. import android.view.inputmethod.InputMethodManager;
  18. import android.widget.Button;
  19. import android.widget.EditText;
  20. import android.widget.ImageView;
  21. import android.widget.PopupWindow;
  22. import android.widget.RelativeLayout;
  23. import android.widget.ScrollView;
  24. import android.widget.TextView;
  25.  
  26. import com.facebook.drawee.view.SimpleDraweeView;
  27. import com.gemalto.idp.mobile.core.HookingDetectionListener;
  28. import com.gemalto.idp.mobile.core.SecurityDetectionService;
  29.  
  30. import butterknife.BindView;
  31. import butterknife.ButterKnife;
  32. import butterknife.OnClick;
  33. import butterknife.Unbinder;
  34. import mx.com.santander.superwallet.R;
  35. import mx.com.santander.superwallet.presenter.virtual.model.PresentActivateDigitalCardView;
  36. import mx.com.santander.superwallet.presenter.virtual.model.AuthenticationPinType;
  37. import mx.com.santander.superwallet.presenter.virtual.view.ActivateVirtualCardView;
  38. import mx.com.santander.superwallet.utils.FormatUtils;
  39. import mx.com.santander.superwallet.utils.ImageUtils;
  40. import mx.com.santander.superwallet.viewmodel.virtual.ActivateVirtualCardViewModel;
  41. import mx.com.santander.superwallet.views.fragments.base.OnSyncInterval;
  42. import mx.com.santander.superwallet.views.fragments.base.WalletBaseFragment;
  43. import mx.com.santander.superwalletcore.model.beans.Product;
  44.  
  45. import static android.content.res.Resources.getSystem;
  46. import static mx.com.santander.superwallet.payments.util.PaymentConstants.RESPONSE_DIGITAL_CARD_ENROLLED_SUCCESS_CODE;
  47. import static mx.com.santander.superwallet.utils.Constants.BRAND_AMEX;
  48. import static mx.com.santander.superwallet.utils.Constants.BRAND_MASTER_CARD;
  49. import static mx.com.santander.superwallet.utils.Constants.BRAND_VISA;
  50. import static mx.com.santander.superwallet.utils.Constants.BUNDLE_KEY_TYPE_AUTHENTICATION_PIN;
  51. import static mx.com.santander.superwallet.utils.Constants.BUNDLE_KEY_VIRTUAL_CARD_PRODUCT;
  52. import static mx.com.santander.superwallet.utils.Constants.MARK_AMEX;
  53. import static mx.com.santander.superwallet.utils.Constants.MARK_MASTER_CARD;
  54. import static mx.com.santander.superwallet.utils.Constants.MARK_VISA;
  55.  
  56. public class ActivateVirtualCardFragment extends WalletBaseFragment implements ActivateVirtualCardView, OnSyncInterval {
  57.  
  58. @BindView(R.id.iv_activate_virtual_card_header)
  59. SimpleDraweeView ivActivateVirtualCardHeader;
  60.  
  61. @BindView(R.id.tv_activate_virtual_card_data_pan)
  62. TextView tvActivateVirtualCardDataPan;
  63.  
  64. @BindView(R.id.et_activate_virtual_card_data_pan)
  65. EditText etActivateVirtualCardDataPan;
  66.  
  67. @BindView(R.id.et_activate_virtual_card_data_expiration_date)
  68. EditText etActivateVirtualCardDataExpirationDate;
  69.  
  70. @BindView(R.id.et_activate_virtual_card_data_cvv)
  71. EditText etActivateVirtualCardDataCvv;
  72.  
  73. @BindView(R.id.iv_activate_virtual_card_data_cvv_help)
  74. ImageView ivActivateVirtualCardDataCvvHelp;
  75.  
  76. @BindView(R.id.btn_activate_virtual_card_data_enroll)
  77. Button btnActivateVirtualCardDataEnroll;
  78.  
  79. @BindView(R.id.rl_activate_virtual_card_data_container)
  80. RelativeLayout rlActivateVirtualCardDataContainer;
  81.  
  82. @BindView(R.id.rl_activate_virtual_card_sucess_container)
  83. RelativeLayout rlActivateVirtualCardSucessContainer;
  84.  
  85. @BindView(R.id.rl_activate_virtual_card_failed_container)
  86. RelativeLayout rlActivateVirtualCardFailedContainer;
  87.  
  88. @BindView(R.id.sv_activate_virtual_card_container)
  89. ScrollView svActivateVirtualCardContainer;
  90.  
  91. @BindView(R.id.tv_activate_virtual_card_sucess_message)
  92. TextView tvActivateVirtualCardSuccessMessage;
  93.  
  94. public static final String TAG = ActivateVirtualCardFragment.class.getSimpleName();
  95.  
  96. private View view;
  97. private Unbinder unbinder;
  98. private Product<?> activateProduct;
  99. private InputMethodManager imm;
  100.  
  101. private ActivateVirtualCardViewModel viewModel;
  102.  
  103. @Override
  104. public void onCreate(@Nullable Bundle savedInstanceState) {
  105. super.onCreate(savedInstanceState);
  106. setScreenName(TAG);
  107. setOnSyncInterval(this);
  108. }
  109.  
  110. @Nullable
  111. @Override
  112. public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  113. view = inflater.inflate(R.layout.fragment_activate_virtual_card, container, false);
  114. unbinder = ButterKnife.bind(this, view);
  115. subscribeViewModels();
  116. initView();
  117. return view;
  118. }
  119.  
  120. @Override
  121. public void onDestroyView() {
  122. super.onDestroyView();
  123. unbinder.unbind();
  124. }
  125.  
  126. @Override
  127. public void onSyncManager(String TAG, long timeElapsed) {
  128.  
  129. }
  130.  
  131. @Override
  132. public void initView() {
  133. try {
  134. if (getArguments() == null) {
  135. onShowCriticalError();
  136. return;
  137. }
  138.  
  139. /*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  140. if (getActivity() != null)
  141. if (getActivity().getWindow() != null)
  142. getActivity().getWindow().setStatusBarColor(getResources().getColor(R.color.white));
  143. }*/
  144.  
  145. activateProduct = (Product<?>) getArguments().getSerializable(BUNDLE_KEY_VIRTUAL_CARD_PRODUCT);
  146.  
  147. if (activateProduct != null)
  148. viewModel.onCheckActivateProduct(activateProduct);
  149.  
  150. if (getContext() != null)
  151. imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
  152.  
  153. rlActivateVirtualCardDataContainer.setVisibility(View.VISIBLE);
  154. rlActivateVirtualCardSucessContainer.setVisibility(View.INVISIBLE);
  155. rlActivateVirtualCardFailedContainer.setVisibility(View.INVISIBLE);
  156.  
  157. btnActivateVirtualCardDataEnroll.setEnabled(Boolean.FALSE);
  158.  
  159. etActivateVirtualCardDataPan.addTextChangedListener(new TextWatcher() {
  160. @Override
  161. public void beforeTextChanged(CharSequence str, int start, int count, int after) {
  162.  
  163. }
  164.  
  165. @Override
  166. public void onTextChanged(CharSequence str, int start, int before, int count) {
  167.  
  168. }
  169.  
  170. @Override
  171. public void afterTextChanged(Editable str) {
  172. if (activateProduct.getPan().length() == 15) {
  173. //es amex
  174. if (str.toString().trim().length() >= 15) {
  175. etActivateVirtualCardDataPan.clearFocus();
  176. etActivateVirtualCardDataExpirationDate.requestFocus();
  177. etActivateVirtualCardDataExpirationDate.setCursorVisible(true);
  178. } else {
  179. }
  180. } else if (activateProduct.getPan().length() == 16) {
  181. //es visa o amex
  182. if (str.toString().trim().length() >= 16) {
  183. etActivateVirtualCardDataPan.clearFocus();
  184. etActivateVirtualCardDataExpirationDate.requestFocus();
  185. etActivateVirtualCardDataExpirationDate.setCursorVisible(true);
  186. } else {
  187. }
  188. }
  189.  
  190.  
  191. }
  192. });
  193.  
  194. etActivateVirtualCardDataExpirationDate.addTextChangedListener(new TextWatcher() {
  195. @Override
  196. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  197.  
  198. }
  199.  
  200. @Override
  201. public void onTextChanged(CharSequence s, int start, int before, int count) {
  202.  
  203. }
  204.  
  205. @Override
  206. public void afterTextChanged(Editable str) {
  207. try {
  208. String initial = str.toString();
  209. // remove all non-digits characters
  210. String processed = initial.replaceAll("\\D", "");
  211.  
  212. if (processed.length() > 2) {
  213. processed = processed.replaceAll("(\\d{2})(?=\\d)", "$1/");
  214. }
  215.  
  216. try {
  217. etActivateVirtualCardDataExpirationDate.removeTextChangedListener(this);
  218. etActivateVirtualCardDataExpirationDate.setText(processed);
  219. etActivateVirtualCardDataExpirationDate.setSelection(processed.length());
  220. } catch (Exception e) {
  221. e.printStackTrace();
  222. }
  223.  
  224. etActivateVirtualCardDataExpirationDate.addTextChangedListener(this);
  225.  
  226. if (str.toString().trim().length() >= 5) {
  227. etActivateVirtualCardDataExpirationDate.clearFocus();
  228. etActivateVirtualCardDataCvv.requestFocus();
  229. etActivateVirtualCardDataCvv.setCursorVisible(true);
  230. }
  231. } catch (Exception e) {
  232. e.printStackTrace();
  233. }
  234. }
  235. });
  236.  
  237. etActivateVirtualCardDataCvv.addTextChangedListener(new TextWatcher() {
  238. @Override
  239. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  240.  
  241. }
  242.  
  243. @Override
  244. public void onTextChanged(CharSequence s, int start, int before, int count) {
  245.  
  246. }
  247.  
  248. @Override
  249. public void afterTextChanged(Editable str) {
  250.  
  251. if (str.toString().length() >= 1) {
  252. svActivateVirtualCardContainer.pageScroll(ScrollView.FOCUS_DOWN);
  253. etActivateVirtualCardDataCvv.requestFocus();
  254. etActivateVirtualCardDataCvv.setSelection(etActivateVirtualCardDataCvv.getText().toString().length());
  255. }
  256.  
  257. if (activateProduct.getPan().length() == 15) {
  258. //es amex
  259. if (str.toString().trim().length() >= 5) {
  260. etActivateVirtualCardDataCvv.clearFocus();
  261. btnActivateVirtualCardDataEnroll.setEnabled(Boolean.TRUE);
  262. } else {
  263. btnActivateVirtualCardDataEnroll.setEnabled(Boolean.FALSE);
  264. }
  265. } else if (activateProduct.getPan().length() == 16) {
  266. //es visa o master
  267. if (str.toString().trim().length() >= 3) {
  268. etActivateVirtualCardDataCvv.clearFocus();
  269. btnActivateVirtualCardDataEnroll.setEnabled(Boolean.TRUE);
  270. imm.hideSoftInputFromWindow(etActivateVirtualCardDataCvv.getWindowToken(), 0);
  271. } else {
  272. btnActivateVirtualCardDataEnroll.setEnabled(Boolean.FALSE);
  273. }
  274. }
  275. }
  276. });
  277. } catch (Exception e) {
  278. e.printStackTrace();
  279. }
  280. }
  281.  
  282. @Override
  283. public void subscribeViewModels() {
  284. viewModel = ViewModelProviders.of(this).get(ActivateVirtualCardViewModel.class);
  285. viewModel.bindView(this);
  286.  
  287. viewModel.getPresentActivateDigitalCardLiveData().observe(this, new Observer<PresentActivateDigitalCardView>() {
  288. @Override
  289. public void onChanged(@Nullable PresentActivateDigitalCardView presentActivateDigitalCardView) {
  290. if (presentActivateDigitalCardView == null) return;
  291.  
  292. ImageUtils
  293. .loadCardImage(
  294. presentActivateDigitalCardView.getCardFront(),
  295. ivActivateVirtualCardHeader);
  296.  
  297. tvActivateVirtualCardDataPan.setText(presentActivateDigitalCardView.getPan());
  298. onConfigureGemaltoDetections(presentActivateDigitalCardView);
  299. }
  300. });
  301.  
  302. viewModel.getPresentPopupCvvInfoLiveData().observe(this, new Observer<PopupWindow>() {
  303. @Override
  304. public void onChanged(@Nullable PopupWindow popupWindow) {
  305. if (popupWindow == null) return;
  306. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
  307. popupWindow.showAsDropDown(ivActivateVirtualCardDataCvvHelp, -dpToPx(100), -1 * dpToPx(300));
  308. }
  309. }
  310. });
  311. }
  312.  
  313. public static int dpToPx(int dp) {
  314. try {
  315. return (int) (dp * getSystem().getDisplayMetrics().density);
  316. } catch (Exception e) {
  317. e.printStackTrace();
  318. }
  319. return 0;
  320. }
  321.  
  322. @Override
  323. public void onShowProgressLoading() {
  324. showProgressDlg();
  325. }
  326.  
  327. @Override
  328. public void onHideProgressLoading() {
  329. hideProgressDialog();
  330. }
  331.  
  332. @Override
  333. public void onShowToast(String message) {
  334.  
  335. }
  336.  
  337. @Override
  338. public Context getViewContext() {
  339. return getActivity();
  340. }
  341.  
  342. @Override
  343. public void onConfigureGemaltoDetections(PresentActivateDigitalCardView presentActivateDigitalCardView) {
  344. try {
  345. if (presentActivateDigitalCardView.isNeedDebugDetection())
  346. SecurityDetectionService.setDebuggerDetection(presentActivateDigitalCardView.isNeedDebugDetection());
  347.  
  348. if (presentActivateDigitalCardView.isNeedAntiHookingDetection()) {
  349. SecurityDetectionService.setHookingDetectionListener(new HookingDetectionListener() {
  350. @Override
  351. public boolean onHookingDetected() {
  352. return Boolean.TRUE;
  353. }
  354. });
  355. }
  356. } catch (Exception e) {
  357. e.printStackTrace();
  358. }
  359. }
  360.  
  361. @Override
  362. public void onEnrollVirtualCardSuccess() {
  363. try {
  364. rlActivateVirtualCardDataContainer.setAlpha(1.0f);
  365. rlActivateVirtualCardSucessContainer.setAlpha(0.0f);
  366.  
  367. rlActivateVirtualCardDataContainer
  368. .animate()
  369. .alpha(0.0f)
  370. .setDuration(500)
  371. .setListener(new AnimatorListenerAdapter() {
  372. @Override
  373. public void onAnimationEnd(Animator animation) {
  374. super.onAnimationEnd(animation);
  375.  
  376. rlActivateVirtualCardDataContainer.setVisibility(View.INVISIBLE);
  377. rlActivateVirtualCardSucessContainer.setVisibility(View.VISIBLE);
  378. rlActivateVirtualCardFailedContainer.setVisibility(View.INVISIBLE);
  379.  
  380. tvActivateVirtualCardSuccessMessage.setText(
  381. getResources().getString(R.string.virtual_card_activate_enroll_success_message)
  382. .concat(" ")
  383. .concat(FormatUtils
  384. .formatLast4DigitsPan(
  385. activateProduct.getPan().trim().replace(" ", "")))
  386. .concat(" fue activada."));
  387.  
  388. rlActivateVirtualCardSucessContainer
  389. .animate()
  390. .alpha(1.0f)
  391. .setDuration(500)
  392. .start();
  393.  
  394. if (getFragmentManager() != null) {
  395.  
  396. Bundle authenticationTokenPinArguments = new Bundle();
  397. authenticationTokenPinArguments.putSerializable(BUNDLE_KEY_TYPE_AUTHENTICATION_PIN, AuthenticationPinType.ENROLLMENT_PIN);
  398.  
  399. AuthenticateTokenPinDialog authenticateTokenPinDialog = AuthenticateTokenPinDialog.newInstance();
  400. authenticateTokenPinDialog.setArguments(authenticationTokenPinArguments);
  401. authenticateTokenPinDialog.show(getFragmentManager(), AuthenticateTokenPinDialog.TAG);
  402. }
  403.  
  404. }
  405. })
  406. .start();
  407. } catch (Exception e) {
  408. e.printStackTrace();
  409. }
  410. }
  411.  
  412. @Override
  413. public void onEnrollVirtualCardFailed() {
  414. try {
  415. rlActivateVirtualCardDataContainer.setAlpha(1.0f);
  416. rlActivateVirtualCardFailedContainer.setAlpha(0.0f);
  417. rlActivateVirtualCardDataContainer
  418. .animate()
  419. .alpha(0.0f)
  420. .setDuration(500)
  421. .setListener(new AnimatorListenerAdapter() {
  422. @Override
  423. public void onAnimationEnd(Animator animation) {
  424. super.onAnimationEnd(animation);
  425.  
  426. rlActivateVirtualCardDataContainer.setVisibility(View.INVISIBLE);
  427. rlActivateVirtualCardSucessContainer.setVisibility(View.INVISIBLE);
  428. rlActivateVirtualCardFailedContainer.setVisibility(View.VISIBLE);
  429.  
  430. rlActivateVirtualCardFailedContainer
  431. .animate()
  432. .alpha(1.0f)
  433. .setDuration(500)
  434. .start();
  435. }
  436. })
  437. .start();
  438. } catch (Exception e) {
  439. e.printStackTrace();
  440. }
  441. }
  442.  
  443. @Override
  444. public void onShowCriticalError() {
  445.  
  446. }
  447.  
  448. @Override
  449. public void onShowValidationPanError() {
  450. showMessageDlgTwo(
  451. getResources().getString(R.string.title_error),
  452. getResources().getString(R.string.virtual_card_activate_enroll_validation_error));
  453. }
  454.  
  455. @Override
  456. public String onGetCardBrandName(String mark) {
  457. try {
  458. switch (mark) {
  459. case MARK_MASTER_CARD: {
  460. return BRAND_MASTER_CARD;
  461. }
  462. case MARK_VISA: {
  463. return BRAND_VISA;
  464. }
  465. case MARK_AMEX: {
  466. return BRAND_AMEX;
  467. }
  468. default: {
  469. return BRAND_MASTER_CARD;
  470. }
  471. }
  472. } catch (Exception e) {
  473. e.printStackTrace();
  474. }
  475. return BRAND_MASTER_CARD;
  476. }
  477.  
  478. @OnClick(R.id.btn_activate_virtual_card_close)
  479. public void onActivateVirtualCardCloseClicked() {
  480. try {
  481. if (getActivity() != null)
  482. getActivity().finish();
  483. } catch (Exception e) {
  484. e.printStackTrace();
  485. }
  486. }
  487.  
  488. @OnClick(R.id.iv_activate_virtual_card_data_cvv_help)
  489. public void onActivateVirtualCardDataCvvHelpClicked() {
  490. viewModel.onShowActivateCardCvvInfo(new ContextThemeWrapper(getActivity(), R.style.AppTheme));
  491. }
  492.  
  493. @OnClick(R.id.btn_activate_virtual_card_data_enroll)
  494. public void onActivateVirtualCardDataEnrollClicked() {
  495. try {
  496. viewModel.onEnrollVirtualCard(
  497. activateProduct.getCenterCode(),
  498. activateProduct.getContract(),
  499. activateProduct.getCodigoEstampacion(),
  500. activateProduct.getTipoProductoPampa(),
  501. onGetCardBrandName(activateProduct.getMarca()),
  502. etActivateVirtualCardDataPan.getText().toString().trim().replace(" ", ""),
  503. etActivateVirtualCardDataExpirationDate.getText().toString().trim().replace("/", ""),
  504. etActivateVirtualCardDataCvv.getText().toString().trim().replace(" ", ""),
  505. getWalletActivity().getDeviceInfo().DeviceModel);
  506. } catch (Exception e) {
  507. e.printStackTrace();
  508. }
  509. }
  510.  
  511. @OnClick(R.id.btn_activate_virtual_card_sucess_landing)
  512. public void onActivateVirtualCardSucessLandingClicked() {
  513. try {
  514. if (getActivity() == null) return;
  515.  
  516. getActivity().setResult(RESPONSE_DIGITAL_CARD_ENROLLED_SUCCESS_CODE);
  517. getActivity().finish();
  518.  
  519. } catch (Exception e) {
  520. e.printStackTrace();
  521. }
  522. }
  523. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement