diff --git a/rave_android/src/main/java/com/flutterwave/raveandroid/account/AccountFragment.java b/rave_android/src/main/java/com/flutterwave/raveandroid/account/AccountFragment.java index 5af9c62f..76b6702d 100644 --- a/rave_android/src/main/java/com/flutterwave/raveandroid/account/AccountFragment.java +++ b/rave_android/src/main/java/com/flutterwave/raveandroid/account/AccountFragment.java @@ -401,8 +401,10 @@ public void onGetBanksRequestFailed(String message) { public void collectOtp(String publicKey, String flutterwaveReference, String validateInstruction) { this.flwRef = flutterwaveReference; - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showOtpScreen(validateInstruction); + if (isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showOtpScreen(validateInstruction); + } } @Override @@ -424,8 +426,10 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { @Override public void displayInternetBankingPage(String authurl, String flwRef) { this.flwRef = flwRef; - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + if(isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) .showWebpageVerificationScreen(authurl); + } } @Override diff --git a/rave_android/src/main/java/com/flutterwave/raveandroid/ach/AchFragment.java b/rave_android/src/main/java/com/flutterwave/raveandroid/ach/AchFragment.java index d165b934..443def42 100644 --- a/rave_android/src/main/java/com/flutterwave/raveandroid/ach/AchFragment.java +++ b/rave_android/src/main/java/com/flutterwave/raveandroid/ach/AchFragment.java @@ -157,9 +157,10 @@ public void showRedirectMessage(boolean active) { @Override public void showWebView(String authUrl, String flwRef) { - - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showWebpageVerificationScreen(authUrl); + if (isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showWebpageVerificationScreen(authUrl); + } } private void dismissDialog() { diff --git a/rave_android/src/main/java/com/flutterwave/raveandroid/barter/BarterFragment.java b/rave_android/src/main/java/com/flutterwave/raveandroid/barter/BarterFragment.java index d5f59ec5..a82ffcef 100644 --- a/rave_android/src/main/java/com/flutterwave/raveandroid/barter/BarterFragment.java +++ b/rave_android/src/main/java/com/flutterwave/raveandroid/barter/BarterFragment.java @@ -169,8 +169,10 @@ public void showFetchFeeFailed(String message) { public void loadBarterCheckout(String authUrlCrude, String flwRef) { this.flwRef = flwRef; - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showBarterCheckoutScreen(authUrlCrude, flwRef); + if(isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showBarterCheckoutScreen(authUrlCrude, flwRef); + } } diff --git a/rave_android/src/main/java/com/flutterwave/raveandroid/card/CardFragment.java b/rave_android/src/main/java/com/flutterwave/raveandroid/card/CardFragment.java index 58943916..f957be3d 100644 --- a/rave_android/src/main/java/com/flutterwave/raveandroid/card/CardFragment.java +++ b/rave_android/src/main/java/com/flutterwave/raveandroid/card/CardFragment.java @@ -421,8 +421,10 @@ public void onPaymentError(String errorMessage) { @Override public void collectCardPin(final Payload payload) { this.payLoad = payload; //added so as to get back in onActivityResult - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showPinScreen(); + if (isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showPinScreen(); + } } @Override @@ -485,7 +487,9 @@ public void onSaveInstanceState(Bundle outState) { * @param message = text to display */ public void showToast(String message) { - Toast.makeText(requireContext(), message+"", Toast.LENGTH_SHORT).show(); + if(isAdded()){ + Toast.makeText(requireContext(), message+"", Toast.LENGTH_SHORT).show(); + } } /** @@ -508,15 +512,19 @@ private void dismissDialog() { public void collectOtp(String flwRef, String message) { this.flwRef = flwRef; dismissDialog(); - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showOtpScreen(message); + if(isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showOtpScreen(message); + } } public void showOTPLayoutForSavedCard(Payload payload, String authInstruction) { this.payLoad = payload; dismissDialog(); - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showOtpScreenForSavedCard(authInstruction); + if(isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showOtpScreenForSavedCard(authInstruction); + } } @Override @@ -576,8 +584,10 @@ public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) public void showWebPage(String authenticationUrl, String flwRef) { this.flwRef = flwRef; - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showWebpageVerificationScreen(authenticationUrl); + if(isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showWebpageVerificationScreen(authenticationUrl); + } } @Override @@ -774,19 +784,17 @@ public void onClick(DialogInterface dialog, int which) { public void collectCardAddressDetails(final Payload payload, String authModel) { this.payLoad = payload; this.authModel = authModel; - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showAddressScreen(); + if(isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showAddressScreen(); + } } private class ExpiryWatcher implements TextWatcher { - private final Calendar calendar; - private final SimpleDateFormat simpleDateFormat; private String lastInput = ""; public ExpiryWatcher() { - calendar = Calendar.getInstance(); - simpleDateFormat = new SimpleDateFormat("MM/yy"); } @Override @@ -803,44 +811,47 @@ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { public void afterTextChanged(Editable editable) { String input = editable.toString(); String cardExpiryToSet = cardExpiryTv.getText().toString() + "/"; + String defaultExpiry = "12"; - try { - calendar.setTime(simpleDateFormat.parse(input)); - } catch (ParseException e) { - - if (editable.length() == 2 && !lastInput.endsWith("/")) { + if (editable.length() == 2 && !lastInput.endsWith("/")) { + try { int month = Integer.parseInt(input); if (month <= 12) { cardExpiryTv.setText(cardExpiryToSet); cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length()); } else { - cardExpiryTv.setText(getResources().getString(R.string.defaultCardExpiry)); + cardExpiryTv.setText(defaultExpiry); cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length()); } - } else if (editable.length() == 2 && lastInput.endsWith("/")) { - try { - int month = Integer.parseInt(input); - if (month <= 12) { - cardExpiryTv.setText(cardExpiryTv.getText().toString().substring(0, 1)); - cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length()); - } else { - cardExpiryTv.setText(getResources().getString(R.string.defaultCardExpiry)); - cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length()); - } - } catch (NumberFormatException ex) { - cardExpiryTv.setText(input.replace("/", "")); + }catch (NumberFormatException ex){ + cardExpiryTv.setText(defaultExpiry); + cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length()); + } + } else if (editable.length() == 2 && lastInput.endsWith("/")) { + try { + int month = Integer.parseInt(input); + if (month <= 12) { + cardExpiryTv.setText(cardExpiryTv.getText().toString().substring(0, 1)); + cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length()); + } else { + cardExpiryTv.setText(defaultExpiry); cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length()); - } catch (Resources.NotFoundException ex) { - ex.printStackTrace(); } + } catch (NumberFormatException ex) { + cardExpiryTv.setText(input.replace("/", "")); + cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length()); + } - } else if (editable.length() == 1) { + } else if (editable.length() == 1) { + try { int month = Integer.parseInt(input); if (month > 1) { - cardExpiryTv.setText("0" + cardExpiryTv.getText().toString() + "/"); + cardExpiryTv.setText(String.format(getString(R.string.formatted_expiry), input)); cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length()); } + }catch (NumberFormatException ignored){ + } } diff --git a/rave_android/src/main/java/com/flutterwave/raveandroid/francMobileMoney/FrancMobileMoneyFragment.java b/rave_android/src/main/java/com/flutterwave/raveandroid/francMobileMoney/FrancMobileMoneyFragment.java index bb1b04ff..46c8b586 100644 --- a/rave_android/src/main/java/com/flutterwave/raveandroid/francMobileMoney/FrancMobileMoneyFragment.java +++ b/rave_android/src/main/java/com/flutterwave/raveandroid/francMobileMoney/FrancMobileMoneyFragment.java @@ -203,8 +203,10 @@ public void showProgressIndicator(boolean active) { public void showWebPage(String authenticationUrl, String flwRef) { this.flwRef = flwRef; - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showWebpageVerificationScreen(authenticationUrl,flwRef); + if (isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showWebpageVerificationScreen(authenticationUrl,flwRef); + } } diff --git a/rave_android/src/main/java/com/flutterwave/raveandroid/ghmobilemoney/GhMobileMoneyFragment.java b/rave_android/src/main/java/com/flutterwave/raveandroid/ghmobilemoney/GhMobileMoneyFragment.java index 0f181776..c6c44803 100644 --- a/rave_android/src/main/java/com/flutterwave/raveandroid/ghmobilemoney/GhMobileMoneyFragment.java +++ b/rave_android/src/main/java/com/flutterwave/raveandroid/ghmobilemoney/GhMobileMoneyFragment.java @@ -232,8 +232,10 @@ public void showWebPage(String authenticationUrl ) { // this.flwRef = flwRef; - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showWebpageVerificationScreen(authenticationUrl); + if(isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showWebpageVerificationScreen(authenticationUrl); + } } diff --git a/rave_android/src/main/java/com/flutterwave/raveandroid/rwfmobilemoney/RwfMobileMoneyFragment.java b/rave_android/src/main/java/com/flutterwave/raveandroid/rwfmobilemoney/RwfMobileMoneyFragment.java index a209b8bf..e26ed457 100644 --- a/rave_android/src/main/java/com/flutterwave/raveandroid/rwfmobilemoney/RwfMobileMoneyFragment.java +++ b/rave_android/src/main/java/com/flutterwave/raveandroid/rwfmobilemoney/RwfMobileMoneyFragment.java @@ -219,8 +219,10 @@ public void showToast(String message) { @Override public void showWebPage(String authenticationUrl) { - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showWebpageVerificationScreen(authenticationUrl); + if (isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showWebpageVerificationScreen(authenticationUrl); + } } @Override diff --git a/rave_android/src/main/java/com/flutterwave/raveandroid/sabankaccount/SaBankAccountFragment.java b/rave_android/src/main/java/com/flutterwave/raveandroid/sabankaccount/SaBankAccountFragment.java index 12d66105..3833fcff 100644 --- a/rave_android/src/main/java/com/flutterwave/raveandroid/sabankaccount/SaBankAccountFragment.java +++ b/rave_android/src/main/java/com/flutterwave/raveandroid/sabankaccount/SaBankAccountFragment.java @@ -137,8 +137,10 @@ public void showPollingIndicator(boolean active) { @Override public void showWebView(String authUrl, String flwRef){ this.flwRef = flwRef; - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showWebpageVerificationScreen(authUrl); + if (isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showWebpageVerificationScreen(authUrl); + } } @Override diff --git a/rave_android/src/main/java/com/flutterwave/raveandroid/ugmobilemoney/UgMobileMoneyFragment.java b/rave_android/src/main/java/com/flutterwave/raveandroid/ugmobilemoney/UgMobileMoneyFragment.java index 13a52e55..bdedac1d 100644 --- a/rave_android/src/main/java/com/flutterwave/raveandroid/ugmobilemoney/UgMobileMoneyFragment.java +++ b/rave_android/src/main/java/com/flutterwave/raveandroid/ugmobilemoney/UgMobileMoneyFragment.java @@ -234,8 +234,10 @@ public void showToast(String message) { @Override public void showWebPage(String authenticationUrl) { - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showWebpageVerificationScreen(authenticationUrl); + if(isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showWebpageVerificationScreen(authenticationUrl); + } } @Override diff --git a/rave_android/src/main/java/com/flutterwave/raveandroid/zmmobilemoney/ZmMobileMoneyFragment.java b/rave_android/src/main/java/com/flutterwave/raveandroid/zmmobilemoney/ZmMobileMoneyFragment.java index 4493ee30..1f65849e 100644 --- a/rave_android/src/main/java/com/flutterwave/raveandroid/zmmobilemoney/ZmMobileMoneyFragment.java +++ b/rave_android/src/main/java/com/flutterwave/raveandroid/zmmobilemoney/ZmMobileMoneyFragment.java @@ -267,8 +267,10 @@ public void showToast(String message) { @Override public void showWebPage(String authenticationUrl) { - new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) - .showWebpageVerificationScreen(authenticationUrl); + if(isAdded()){ + new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme()) + .showWebpageVerificationScreen(authenticationUrl); + } } @Override diff --git a/rave_android/src/main/res/values/strings.xml b/rave_android/src/main/res/values/strings.xml index 82858cc5..49295d63 100644 --- a/rave_android/src/main/res/values/strings.xml +++ b/rave_android/src/main/res/values/strings.xml @@ -203,5 +203,6 @@ <string name="please_select_a_card">Please select a card</string> <string name="barter_funding">Barter Funding</string> <string name="verifying_transaction">Verifying transaction...</string> + <string name="formatted_expiry">0%1$s/</string> </resources>